faecher:informatik:oberstufe:git:erstes_repo:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:git:erstes_repo:start [30.10.2023 08:29] – [Mittagessen] Frank Schiebelfaecher:informatik:oberstufe:git:erstes_repo:start [05.03.2025 14:11] (aktuell) – [Initialisieren] Frank Schiebel
Zeile 1: Zeile 1:
-===== Das erste Repo - Erste Schritte mit Git=====+===== Erste Schritte mit git=====
  
 ===== Initialisieren ===== ===== Initialisieren =====
  
-Um die Abläufe und die Funktionsweise zu erproben, wollen wir zunächst ein Verzeichnis unter Versionskontrolle stellen, in dem wir ein Tagebuch anlegen. Wir erstellen also ein Verzeichnis ''tagebuch'' und initialisieren dort ein Git-Repository:+Um die Abläufe und die Funktionsweise zu erproben, wollen wir zunächst ein Verzeichnis unter Versionskontrolle stellen, in dem wir ein **Tagebuch** anlegen. Wir erstellen also ein Verzeichnis ''tagebuch'' und initialisieren dort ein Git-Repository:
  
 <code> <code>
-frank@pike:~$ mkdir tagebuch +max@pc:~$ mkdir tagebuch 
-frank@pike:~$ cd tagebuch/ +max@pc:~$ cd tagebuch/ 
-frank@pike:~/tagebuch$ git init +max@pc:~$ git init 
-Leeres Git-Repository in /home/frank/tagebuch/.git/ initialisiert+Leeres Git-Repository in /home/max/tagebuch/.git/ initialisiert
 </code> </code>
  
Zeile 17: Zeile 17:
 $ ls -la  $ ls -la 
 insgesamt 132 insgesamt 132
-drwxr-xr-x frank frank   4096 24. Okt 13:32 . +drwxr-xr-x max max   4096 24. Okt 13:32 . 
-drwxr-xr-x 21 frank frank 122880 24. Okt 13:32 .. +drwxr-xr-x 21 max max 122880 24. Okt 13:32 .. 
-drwxr-xr-x frank frank   4096 24. Okt 13:32 .git+drwxr-xr-x max max   4096 24. Okt 13:32 .git
 </code> </code>
  
 ===== Repository Status anzeigen lassen ===== ===== Repository Status anzeigen lassen =====
 +Das Verzeichnis ''tagebuch'' ist jetzt ein "git-Repository" - es wird von git "beobachtet", so dass man von nun an Änderungen in diesem Verzeichnis und seinen Unterverzeichnissen nachverfolgen kann.
  
-Mit dem Befehl ''git status'' kann man sich den aktuellen Status des Repos anzeigen lassen:+Mit dem Befehl ''git status'' kann man sich den aktuellen Status des "Reposanzeigen lassen:
  
 <code bash> <code bash>
-frank@pike:~/tagebuch$ git status+max@pc:~/tagebuch$ git status
 Auf Branch main Auf Branch main
  
Zeile 35: Zeile 36:
 Sie "git add" zum Versionieren) Sie "git add" zum Versionieren)
 </code> </code>
 +((Bei älteren git-Versionen heißt der Hauptbranch, der hier angezeigt wird gelegentlich ''master'', in diesem Fall muss man sich für das vorliegende Tutorial stets ''main'' durch ''master'' ersetzt denken -- und in den Befehlen schreiben.))
 ===== Ein erster Tagebucheintrag ===== ===== Ein erster Tagebucheintrag =====
  
 {{ :faecher:informatik:oberstufe:git:erstes_repo:2023-10-29_20-02.png?400|}} {{ :faecher:informatik:oberstufe:git:erstes_repo:2023-10-29_20-02.png?400|}}
-Lege mit einem Texteditor((**Nicht** mit Word oder Writer!)) eine Datei ''aufstehen.txt'' an. Du kannst in diese Datei z.B. hineinschreiben, wie du geschlafen hast und wann du aufgestanden bist. Das folgende Beispiel verwendet den Editor ''nano'' unter Linux, du kannst aber auch Notepad++ unter Windows oder Kate unter LInux verwenden, diese Editoren haben eine GUI. Wichtig ist, dass du die Datei im Verzeichnis ''tagebuch'' abspeicherst.+Lege mit einem Texteditor((**Nicht** mit Word oder Writer!)) eine Datei ''aufstehen.txt'' an. Du kannst in diese Datei z.B. hineinschreiben, wie du geschlafen hast und wann du aufgestanden bist. Das folgende Beispiel verwendet den Editor ''nano'' unter Linux, du kannst aber auch Notepad++ unter Windows oder Kate unter Linux verwenden, diese Editoren haben eine GUI. Wichtig ist, dass du die Datei im Verzeichnis ''tagebuch'' abspeicherst.
  
 <code bash> <code bash>
-frank@pike:~/tagebuch$ nano aufstehen.txt +max@pc:~/tagebuch$ nano aufstehen.txt 
-frank@pike:~/tagebuch$ cat aufstehen.txt +max@pc:~/tagebuch$ cat aufstehen.txt 
 Ich habe gut geschlafen. Ich habe gut geschlafen.
 Um 6:20 bin ich aufgestanden. Um 6:20 bin ich aufgestanden.
Zeile 65: Zeile 66:
  
 <code bash> <code bash>
-git status+max@pc:~/tagebuch$ git status
 Auf Branch main Auf Branch main
  
Zeile 82: Zeile 83:
  
 <code bash> <code bash>
-frank@pike:~/tagebuch$ git add aufstehen.txt  +max@pc:~/tagebuch$ git add aufstehen.txt  
-frank@pike:~/tagebuch$ git status+max@pc:~/tagebuch$ git status
 Auf Branch main Auf Branch main
  
Zeile 95: Zeile 96:
 {{ :faecher:informatik:oberstufe:git:erstes_repo:git_add.drawio.png?550 |}} {{ :faecher:informatik:oberstufe:git:erstes_repo:git_add.drawio.png?550 |}}
  
-Wenn man mit den im Index vorgemerkten Änderungen zufrieden ist, macht man einen "Commit"((In unserem Beispiel ist das noch sinnlos, weil wir derzeit ja nur eine Datei in unserem Tagebuch haben)).  +Wenn man mit den im Index vorgemerkten Änderungen zufrieden ist, macht man einen "Commit" und merkt sich dabei den Zustand aller im Index befindlichen Dateien
- +
-Mit dem Befehl  ''git commit -m "Erster Commit"'' legt man einen Commit mit einer Commit-Message an (Paramter ''-m''). Wenn man die Commit-Message nicht mit ''-m'' angibt, öffnet sich ein Editor, in dem man diese bearbeiten muss. +
  
 +Mit dem Befehl  ''git commit -m "Erster Commit: aufstehen.txt angelegt"'' legt man einen Commit mit einer Commit-Message an (Paramter ''-m''). Wenn man die Commit-Message nicht mit ''-m'' angibt, öffnet sich ein Editor, in dem man diese bearbeiten muss.
  
 <code bash> <code bash>
-frank@pike:~/tagebuch$ git commit -m "Aufstehen!+max@pc:~/tagebuch$ git commit -m "Erster Commit: aufstehen.txt angelegt
-[main (Root-Commit) 9ee8f8bAufstehen!+[main (Root-Commit) 28ec5a7Erster Commit: aufstehen.txt angelegt
  1 file changed, 2 insertions(+)  1 file changed, 2 insertions(+)
  create mode 100644 aufstehen.txt  create mode 100644 aufstehen.txt
Zeile 113: Zeile 112:
  
 <code> <code>
-frank@pike:~/tagebuch$ git status+max@pc:~/tagebuch$ git status
 Auf Branch main Auf Branch main
 nichts zu committen, Arbeitsverzeichnis unverändert nichts zu committen, Arbeitsverzeichnis unverändert
Zeile 120: Zeile 119:
 Man erkennt, dass der Index wieder leer ist ("nichts zum Commit vorgemerkt"). Man erkennt, dass der Index wieder leer ist ("nichts zum Commit vorgemerkt").
  
-Nun kann man weitere Änderungen im Tagebuch vornehmen und  sich an allen wichtigen Stellen den Zustand der Dateien in einem Commit merken.+Nun kann man weitere Änderungen im Tagebuch vornehmen und sich zu allen wichtigen Zeitpunkten den Zustand der Dateien in einem Commit merken.
  
 ===== Wir frühstücken ===== ===== Wir frühstücken =====
Zeile 130: Zeile 129:
   * Halte in der Datei ''fruehstueck.txt'' fest, was es zum Frühstück gab.   * Halte in der Datei ''fruehstueck.txt'' fest, was es zum Frühstück gab.
   * Kontrolliere mit ''git status'', dass es die Datei jetzt gibt, sie aber nicht unter Versionskontrolle steht.   * Kontrolliere mit ''git status'', dass es die Datei jetzt gibt, sie aber nicht unter Versionskontrolle steht.
-  * Füge die Datei ''fruehstuck.txt'' mit dem Befehl ''git add fuehstuck.txt'' zum Index hinzu.+  * Füge die Datei ''fruehstueck.txt'' mit dem Befehl ''git add fuehstuck.txt'' zum Index hinzu.
   * Erstelle einen Commit für das Frühstück. Vergiss nicht die Commit-Message nach der Option ''-m''.   * Erstelle einen Commit für das Frühstück. Vergiss nicht die Commit-Message nach der Option ''-m''.
   * Überprüfe den Zustand deines Repositorys.   * Überprüfe den Zustand deines Repositorys.
Zeile 136: Zeile 135:
 [[.loesung01|Lösung]] [[.loesung01|Lösung]]
  
-Wir haben nur einen zweiten Commit erstellt:+Wir haben nun einen zweiten Commit erstellt:
  
 {{ :faecher:informatik:oberstufe:git:erstes_repo:zweitercommit.drawio.png?550 |}} {{ :faecher:informatik:oberstufe:git:erstes_repo:zweitercommit.drawio.png?550 |}}
Zeile 144: Zeile 143:
 </callout> </callout>
  
-Man kann sich einen Commit also wie im Bild dargestellt als Archivbox vorstellen, in dem jeweils der Zustand aller versionierten Dateien festgehalten ist. Ein Commit wird durch einen Hexadezimalen "Hashwert" identifiziert, das ist gewissermaßen die eindeutige Nummer eines Commits, z.B. ''2c70b75''.+Man kann sich einen Commit also wie im Bild dargestellt als Archivbox vorstellen, in dem jeweils der Zustand aller versionierten Dateien festgehalten ist. Ein Commit wird durch einen Hexadezimalen "Hashwert" identifiziert, das ist gewissermaßen die eindeutige Nummer eines Commits, z.B. ''28ec5a7''.
  
 Mit dem Befehl ''git log'' kann man sich die Commits auflisten lassen:  Mit dem Befehl ''git log'' kann man sich die Commits auflisten lassen: 
  
-<code> +<code bash
-frank@pike:~/tagebuch$ git log  +max@pc:~/tagebuch$ git log  
-commit 2c70b7517bcf0217c62b93336de038f166225c6a (HEAD -> main) +commit f9353d6278296bd173d3760e3b95e743208650e7 (HEAD -> main) 
-Author: Frank Schiebel <codeberg@ua25.de+Author: Max Mustermann <max@example.org
-Date:   Sun Oct 29 20:32:50 2023 +0100+Date:   Wed Oct 2 08:58:45 2024 +0200
  
-    Fruestück+    Frühstück in Datei 'fruehstueck.txt' hinzugefügt
  
-commit 9ee8f8bfdd6c532fee7d693c9d4431e22f455f0d +commit 28ec5a71bc2bce75bbbbfe5f2d336fe49b3642fa 
-Author: Frank Schiebel <codeberg@ua25.de+Author: Max Mustermann <max@example.org
-Date:   Sun Oct 29 20:14:11 2023 +0100+Date:   Wed Oct 2 08:35:53 2024 +0200
  
-    Aufstehen!+    Erster Commit: aufstehen.txt angelegt
 </code> </code>
 Man erkennt hier auch, dass die eigentlichen Commit-Hashes sehr viel länger sind, als das Beispiel oben vermuten lässt, für die Identifizierung eines Commits reichen die ersten 7 Stellen des Hashes aus. Man erkennt hier auch, dass die eigentlichen Commit-Hashes sehr viel länger sind, als das Beispiel oben vermuten lässt, für die Identifizierung eines Commits reichen die ersten 7 Stellen des Hashes aus.
Zeile 171: Zeile 170:
 === (A2) === === (A2) ===
   * Füge deinem Tagebuch einen Eintrag ''mittagessen.txt'' hinzu, zunächst ohne diese zu versionieren.   * Füge deinem Tagebuch einen Eintrag ''mittagessen.txt'' hinzu, zunächst ohne diese zu versionieren.
-  * Jetzt fällt dir ein, dass du zum Frühstück ein Stück Schokolade hattest, dass du  nicht notiert hattest. Ändere die Datei ''fruehstueck.txt'' ab, so dass die Schokolade dort vermerkt ist.+  * Jetzt fällt dir ein, dass du zum Frühstück ein Stück Schokolade hattest, das du  nicht notiert hattest. Ändere die Datei ''fruehstueck.txt'' ab, so dass die Schokolade dort vermerkt ist.
   * Überprüfe mit ''git status'' den Zustand deines Repositorys.   * Überprüfe mit ''git status'' den Zustand deines Repositorys.
  
Zeile 177: Zeile 176:
  
 <code bash> <code bash>
-frank@pike:~/tagebuch$ vi mittagessen.txt +max@pc:~/tagebuch$ nano mittagessen.txt 
-frank@pike:~/tagebuch$ vi fruehstueck.txt  +max@pc:~/tagebuch$ nano fruehstueck.txt  
-frank@pike:~/tagebuch$ git status+max@pc:~/tagebuch$ git status
 Auf Branch main Auf Branch main
 Änderungen, die nicht zum Commit vorgemerkt sind: Änderungen, die nicht zum Commit vorgemerkt sind:
Zeile 191: Zeile 190:
  
 keine Änderungen zum Commit vorgemerkt (benutzen Sie "git add" und/oder "git commit -a") keine Änderungen zum Commit vorgemerkt (benutzen Sie "git add" und/oder "git commit -a")
 +</code>
  
 +
 +Wir haben jetzt **zwei** Dinge geändert: 
 +  * In der Datei ''fruehstueck.txt'' haben wir eine Änderung vorgenommen.
 +  * Die Datei ''mittagessen.txt'' wurde neu hinzugefügt.
 +
 +Wenn man nun den nächsten Commit vorbereitet, kann man mit dem Befehl ''git add'' wieder auswählen, welche Änderungen in den nächsten Commit übernommen werden. Um das zu demonstrieren, teilen wir die beiden vorgenommenen Änderungen im Folgenden auf zwei Commits auf.
 +
 +<code bash>
 +max@pc:~/tagebuch$ git add fruehstueck.txt
 +max@pc:~/tagebuch$ git status
 +Auf Branch main
 +Zum Commit vorgemerkte Änderungen:
 +  (benutzen Sie "git restore --staged <Datei>..." zum Entfernen aus der Staging-Area)
 + geändert:       fruehstueck.txt
 +
 +Unversionierte Dateien:
 +  (benutzen Sie "git add <Datei>...", um die Änderungen zum Commit vorzumerken)
 + mittagessen.txt
 </code> </code>
  
 +Jetzt haben wir die Änderungen von ''fruehstueck.txt'' für den nächsten Commit vorgemerkt, die neue Datei ''mittagessen.txt'' wird allerdings nicht in diesen übernommen. Mit ''git commit -m "fruehstueck.txt geändert"'' wird der Commit ausgeführt.
 +
 +Der Status ist jetzt:
 +<code bash>
 +max@pc:~/tagebuch$ git status
 +Auf Branch main
 +Unversionierte Dateien:
 +  (benutzen Sie "git add <Datei>...", um die Änderungen zum Commit vorzumerken)
 + mittagessen.txt
 +
 +nichts zum Commit vorgemerkt, aber es gibt unversionierte Dateien
 +(benutzen Sie "git add" zum Versionieren)
 +</code>
 +
 +Für den nächsten Commit übernehmen wir jetzt die Datei ''mittagessen.txt'':
 +<code bash>
 +git add mittagessen.txt
 +git commit -m "Mittagessen hinzugefügt"
 +</code>
 +
 +<callout type="info" title="Zwischenergebnis">
 +Wir haben jetzt gelernt, wie wir selektiv **Dateien** in einem Verzeichnis **unter Versionskontrolle** stellen können. Mit jedem Commit erzeugen wir einen **Snapshot** des Zustands, den die versionierten Dateien zum Zeitpunkt des Commits haben. Dateien, die man nicht mit ''git add'' unter Versionskontrolle gestellt hat, werden von git nicht beeinflusst.
 +
 +Als nächstes wollen wir uns ansehen, wie wir uns die **Versionsgeschichte** genauer ansehen können und in der Zeit zurückreisen und **ältere Versionen betrachten** können.
 +</callout>
  
 ===== Material ===== ===== Material =====
  
 {{simplefilelist>:faecher:informatik:oberstufe:git:erstes_repo:*}} {{simplefilelist>:faecher:informatik:oberstufe:git:erstes_repo:*}}
  • faecher/informatik/oberstufe/git/erstes_repo/start.1698654547.txt.gz
  • Zuletzt geändert: 30.10.2023 08:29
  • von Frank Schiebel