Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
talit:git_github [2022-02-02 22:25] – [2.5 Diff] sca | talit:git_github [2022-02-03 11:56] (aktuell) – sca | ||
---|---|---|---|
Zeile 6: | Zeile 6: | ||
Eleganter ist die Verwendung von einem **Versionierungstool**. Dieses erlaubt es einem **Snapshots** von einem Dokument zu erstellen, also den aktuellen Zustand eines Dokuments zu speichern. Solche Tools machen nicht immer eine ganze Kopie vom Dokument, sondern //merken sich nur die Unterschiede// | Eleganter ist die Verwendung von einem **Versionierungstool**. Dieses erlaubt es einem **Snapshots** von einem Dokument zu erstellen, also den aktuellen Zustand eines Dokuments zu speichern. Solche Tools machen nicht immer eine ganze Kopie vom Dokument, sondern //merken sich nur die Unterschiede// | ||
+ | |||
+ | Die **versteckten Ordner / Dateien** kannst du wie folgt ein- und ausblenden. Gehe dazu in den File-Explorer / Finder: | ||
+ | * Windows: Ansicht / Ausgeblendete Elemente | ||
+ | * Mac: CMD + Shift + . | ||
Wir arbeiten hier mit dem Versionierungstool **Git**, welches gleichzeitig auch der Industriestandard und gratis ist. Weiter arbeiten wir mit **GitHub**, eine Art Online-Cloud für Projekte, die mit Git versioniert werden. GitHub ist eine hervorragende Lösung für **Kollaborationen**: | Wir arbeiten hier mit dem Versionierungstool **Git**, welches gleichzeitig auch der Industriestandard und gratis ist. Weiter arbeiten wir mit **GitHub**, eine Art Online-Cloud für Projekte, die mit Git versioniert werden. GitHub ist eine hervorragende Lösung für **Kollaborationen**: | ||
Zeile 55: | Zeile 59: | ||
Der wichtigste git-Befehl ist | Der wichtigste git-Befehl ist | ||
- | ``` | + | <code bash> |
git status | git status | ||
- | ``` | + | </ |
Er zeigt dir den **aktuellen Status** eines Repositories an. | Er zeigt dir den **aktuellen Status** eines Repositories an. | ||
Zeile 71: | Zeile 75: | ||
Um ein **neues Git Repository zu initialisieren**, | Um ein **neues Git Repository zu initialisieren**, | ||
- | ``` | + | <code bash> |
git init | git init | ||
- | ``` | + | </ |
Dein lokales Repository besteht aus drei **Instanzen**, | Dein lokales Repository besteht aus drei **Instanzen**, | ||
- | {{: | + | {{: |
Hast du gerade ein Repository initialisiert, | Hast du gerade ein Repository initialisiert, | ||
**Einzelnes File** dem **Index hinzuzufügen**: | **Einzelnes File** dem **Index hinzuzufügen**: | ||
- | ``` | + | <code bash> |
git add < | git add < | ||
- | ``` | + | </ |
**Alle Files** (auch in Unterordnern) dem **Index hinzuzufügen**: | **Alle Files** (auch in Unterordnern) dem **Index hinzuzufügen**: | ||
- | ``` | + | <code bash> |
git add . | git add . | ||
- | ``` | + | </ |
Tippst du wieder `git status` werden diese Dateien jetzt in Grün dargestellt. | Tippst du wieder `git status` werden diese Dateien jetzt in Grün dargestellt. | ||
Nun musst du deine **Änderungen noch bestätigen**, | Nun musst du deine **Änderungen noch bestätigen**, | ||
- | ``` | + | <code bash> |
git commit -am " | git commit -am " | ||
- | ``` | + | </ |
Mit diesem ersten Commit hast du eine erste Version erstellt, quasi einen ersten *Snapshot*. Der letzte Teil des Befehls ist eine **Commit-Nachricht**, | Mit diesem ersten Commit hast du eine erste Version erstellt, quasi einen ersten *Snapshot*. Der letzte Teil des Befehls ist eine **Commit-Nachricht**, | ||
* Commit-Nachrichten sollten auf **Englisch** geschrieben werden. | * Commit-Nachrichten sollten auf **Englisch** geschrieben werden. | ||
Zeile 106: | Zeile 110: | ||
Nun kannst du weiter an deinen Dokumenten arbeiten. Immer, wenn du einen **neuen Commit/ | Nun kannst du weiter an deinen Dokumenten arbeiten. Immer, wenn du einen **neuen Commit/ | ||
- | ``` | + | <code bash> |
- | // Übersicht verschaffen über Status des Repositorys | + | # Übersicht verschaffen über Status des Repositorys |
git status | git status | ||
- | // Neue Files hinzufügen | + | # Neue Files hinzufügen |
git add ... | git add ... | ||
- | // Change committen: | + | # Change committen: |
git commit -am " | git commit -am " | ||
- | // vergewissere dich, dass alles i.O. | + | # vergewissere dich, dass alles i.O. |
git status | git status | ||
- | ``` | + | </ |
Dies sind die Befehle, die du 95% der Zeit benötigst. Lerne sie auswendig! | Dies sind die Befehle, die du 95% der Zeit benötigst. Lerne sie auswendig! | ||
Zeile 134: | Zeile 138: | ||
**Datei/ | **Datei/ | ||
- | ``` | + | <code bash> |
git rm --cached fileName | git rm --cached fileName | ||
git rm -r --cached folderName | git rm -r --cached folderName | ||
- | ``` | + | </ |
**Zeige alle von Git getrackten Dateien** | **Zeige alle von Git getrackten Dateien** | ||
- | ``` | + | <code bash> |
git ls-files # oder: | git ls-files # oder: | ||
git ls-tree -r master | git ls-tree -r master | ||
- | ``` | + | </ |
Zeile 181: | Zeile 185: | ||
**Klone** das Repo nun auf deinen Computer. | **Klone** das Repo nun auf deinen Computer. | ||
Hast du auf GitHub das Repo geöffnet, so kannst du unter *Clone or download* den Link zum Repo kopieren | Hast du auf GitHub das Repo geöffnet, so kannst du unter *Clone or download* den Link zum Repo kopieren | ||
- | ``` | + | <code bash> |
git clone https:// | git clone https:// | ||
- | ``` | + | </ |
==== - Mit GitHub arbeiten ==== | ==== - Mit GitHub arbeiten ==== | ||
Hast du lokal auf deinem Computer Änderungen vorgenommen und diese committed (siehe [[talit: | Hast du lokal auf deinem Computer Änderungen vorgenommen und diese committed (siehe [[talit: | ||
- | ``` | + | <code bash> |
git push | git push | ||
- | ``` | + | </ |
Gehe nun auf GitHub und vergewissere dich, dass alles geklappt hat. | Gehe nun auf GitHub und vergewissere dich, dass alles geklappt hat. | ||
Hat in der Zwischenzeit deine Kollegin ins gleiche Repository gepushed, kannst du selbst deine Änderungen nicht pushen. Stattdessen musst du die aktuelle Version von GitHub herunter**pullen**: | Hat in der Zwischenzeit deine Kollegin ins gleiche Repository gepushed, kannst du selbst deine Änderungen nicht pushen. Stattdessen musst du die aktuelle Version von GitHub herunter**pullen**: | ||
- | ``` | + | <code bash> |
git pull | git pull | ||
- | ``` | + | </ |
Git versucht nun, deine Änderungen mit denjenigen deiner Kollegin zu verbinden - zu **mergen**. Habt ihr unterschiedliche Files oder das gleiche File an unterschiedlichen Stellen bearbeitet, so sollte dies zu keinen Problemen führen. Habt ihr aber identische Stellen im gleichen File bearbeitet, so führt dies zu einem **merge conflict** - und dieser muss behoben werden. Öffne dazu das File und suche den Konflikt, dieser wird deutlich angezeigt, und löse diesen. Danach kannst du die Änderung committen und deine Änderungen nach GitHub pushen. | Git versucht nun, deine Änderungen mit denjenigen deiner Kollegin zu verbinden - zu **mergen**. Habt ihr unterschiedliche Files oder das gleiche File an unterschiedlichen Stellen bearbeitet, so sollte dies zu keinen Problemen führen. Habt ihr aber identische Stellen im gleichen File bearbeitet, so führt dies zu einem **merge conflict** - und dieser muss behoben werden. Öffne dazu das File und suche den Konflikt, dieser wird deutlich angezeigt, und löse diesen. Danach kannst du die Änderung committen und deine Änderungen nach GitHub pushen. | ||
Zusammengefasst die wichtigsten Arbeitsschritte: | Zusammengefasst die wichtigsten Arbeitsschritte: | ||
- | ``` | + | <code bash> |
- | // Übersicht verschaffen über Status des Repositorys | + | # Übersicht verschaffen über Status des Repositorys |
git status | git status | ||
- | // Neue Files hinzufügen | + | # Neue Files hinzufügen |
git add ... | git add ... | ||
- | // Change committen: | + | # Change committen: |
git commit -am " | git commit -am " | ||
- | // Auf GitHub pushen | + | # Auf GitHub pushen |
git push | git push | ||
- | ``` | + | </ |
Falls beim Pushen die Meldung kommt, dass bereits jemand vor dir gepushed hat: | Falls beim Pushen die Meldung kommt, dass bereits jemand vor dir gepushed hat: | ||
- | ``` | + | <code bash> |
- | // aktuellste Version herunter pullen | + | # aktuellste Version herunter pullen |
git pull | git pull | ||
- | // löse merge conflicts, falls es welche gibt | + | # löse merge conflicts, falls es welche gibt |
- | // Change committen: | + | # Change committen: |
git commit -am " | git commit -am " | ||
- | // Auf GitHub pushen | + | # Auf GitHub pushen |
git push | git push | ||
- | ``` | + | </ |
==== - Kollaborationen ==== | ==== - Kollaborationen ==== | ||
Zeile 238: | Zeile 242: | ||
Mit dem folgenden Befehl werden die sämtliche Änderungen seit dem letzten Commit angezeigt: | Mit dem folgenden Befehl werden die sämtliche Änderungen seit dem letzten Commit angezeigt: | ||
- | ``` | + | <code bash> |
git diff HEAD | git diff HEAD | ||
- | ``` | + | </ |
Das Keyword HEAD ist ein Zeiger auf den letzten Commit. | Das Keyword HEAD ist ein Zeiger auf den letzten Commit. | ||
Oft ist es auch nützlich, die Unterschiede zwischen zwei Commits zu sehen. Jeder Commit ist durch eine eindeutige lange Nummer (Zahlen und Buchstaben) gekennzeichnet, | Oft ist es auch nützlich, die Unterschiede zwischen zwei Commits zu sehen. Jeder Commit ist durch eine eindeutige lange Nummer (Zahlen und Buchstaben) gekennzeichnet, | ||
- | ``` | + | <code bash> |
git log | git log | ||
- | ``` | + | </ |
Falls es sich um ein GitHub-Repository handelt, kannst du die Commit-Nummern auch dort nachschlagen. Kopiere dir die Nummern der zu vergleichenden Commits heraus. Tatsächlich reicht es, wenn man die ersten paar Ziffern der Nummer nimmt. | Falls es sich um ein GitHub-Repository handelt, kannst du die Commit-Nummern auch dort nachschlagen. Kopiere dir die Nummern der zu vergleichenden Commits heraus. Tatsächlich reicht es, wenn man die ersten paar Ziffern der Nummer nimmt. | ||
Die Unterschiede anzeigen kannst du nun wie folgt: | Die Unterschiede anzeigen kannst du nun wie folgt: | ||
- | ``` | + | <code bash> |
git diff commitnumber1 commitnumber2 | git diff commitnumber1 commitnumber2 | ||
- | ``` | + | </ |
Interessiert dich nur, welche Files überhaupt verändert wurden, so füge die Option `--name-only` hinten an den Befehl: | Interessiert dich nur, welche Files überhaupt verändert wurden, so füge die Option `--name-only` hinten an den Befehl: | ||
- | ``` | + | <code bash> |
git diff commitnumber1 commitnumber2 --name-only | git diff commitnumber1 commitnumber2 --name-only | ||
- | ``` | + | </ |
+ | Weitere Infos zu diesem Thema findest du hier: https:// | ||
Zeile 270: | Zeile 275: | ||
Nun musst du das lokale Repo mit dem leeren auf Repo auf GitHub verbinden: | Nun musst du das lokale Repo mit dem leeren auf Repo auf GitHub verbinden: | ||
- | ``` | + | <code bash> |
git remote add origin https:// | git remote add origin https:// | ||
- | ``` | + | </ |
Das Repo auf GitHub wird das **remote Repository** genannt (remote = entfernt). Das (oder die) remote Repository eines Projekts kann man anzeigen mit | Das Repo auf GitHub wird das **remote Repository** genannt (remote = entfernt). Das (oder die) remote Repository eines Projekts kann man anzeigen mit | ||
- | ``` | + | <code bash> |
git remote -v | git remote -v | ||
- | ``` | + | </ |
Nun können die Daten auf GitHub gepushed werden: | Nun können die Daten auf GitHub gepushed werden: | ||
- | ``` | + | <code bash> |
git push origin master | git push origin master | ||
- | ``` | + | </ |
Möchte man ein **remote Repository entfernen**, | Möchte man ein **remote Repository entfernen**, | ||
- | ``` | + | <code bash> |
git remote rm origin | git remote rm origin | ||
- | ``` | + | </ |
=== - Branches === | === - Branches === |