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 21:35] – 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 ==== | ||
+ | |||
+ | Hast du lokal auf deinem Computer Änderungen vorgenommen und diese committed (siehe [[talit: | ||
+ | <code bash> | ||
+ | git push | ||
+ | </ | ||
+ | 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**: | ||
+ | <code bash> | ||
+ | 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. | ||
+ | |||
+ | Zusammengefasst die wichtigsten Arbeitsschritte: | ||
+ | |||
+ | <code bash> | ||
+ | # Übersicht verschaffen über Status des Repositorys | ||
+ | git status | ||
+ | |||
+ | # Neue Files hinzufügen | ||
+ | git add ... | ||
+ | |||
+ | # Change committen: | ||
+ | git commit -am " | ||
+ | |||
+ | # Auf GitHub pushen | ||
+ | git push | ||
+ | </ | ||
+ | Falls beim Pushen die Meldung kommt, dass bereits jemand vor dir gepushed hat: | ||
+ | <code bash> | ||
+ | # aktuellste Version herunter pullen | ||
+ | git pull | ||
+ | |||
+ | # löse merge conflicts, falls es welche gibt | ||
+ | |||
+ | # Change committen: | ||
+ | git commit -am " | ||
+ | |||
+ | # Auf GitHub pushen | ||
+ | git push | ||
+ | </ | ||
+ | |||
+ | ==== - Kollaborationen ==== | ||
+ | |||
+ | Du kannst ein privates Repo für andere GitHub-Benutzer freigeben, damit diese mit dir an diesem Arbeiten können. | ||
+ | Wähle dazu auf GitHub das Repo an, klicke auf *Settings / Collaborators* und wähle den Benutzer aus. | ||
+ | |||
+ | Mit einem gratis Account von GitHub kannst du bis zu drei Collaborators zu einem Repo hinzufügen. | ||
+ | |||
+ | ==== - Diff ==== | ||
+ | |||
+ | Mit dem folgenden Befehl werden die sämtliche Änderungen seit dem letzten Commit angezeigt: | ||
+ | <code bash> | ||
+ | git diff HEAD | ||
+ | </ | ||
+ | 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, | ||
+ | <code bash> | ||
+ | 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. | ||
+ | Die Unterschiede anzeigen kannst du nun wie folgt: | ||
+ | <code bash> | ||
+ | git diff commitnumber1 commitnumber2 | ||
+ | </ | ||
+ | Interessiert dich nur, welche Files überhaupt verändert wurden, so füge die Option | ||
+ | <code bash> | ||
+ | git diff commitnumber1 commitnumber2 --name-only | ||
+ | </ | ||
+ | Weitere Infos zu diesem Thema findest du hier: https:// | ||
==== - Weitere GitHub Dinge ==== | ==== - Weitere GitHub Dinge ==== | ||
Zeile 197: | 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 | ||
- | ``` | + | </code> |
- | + | ||
- | === - Mit GitHub arbeiten === | + | |
- | + | ||
- | Hast du lokal auf deinem Computer Änderungen vorgenommen und diese committed (siehe [Mit Git arbeiten](Mit_Git_arbeiten)), | + | |
- | ```bash | + | |
- | git push | + | |
- | ``` | + | |
- | Gehe nun auf GitHub und vergewissere dich, dass alles geklappt hat. | + | |
- | + | ||
- | === - Kollaborationen ==== | + | |
- | + | ||
- | Du kannst ein privates Repo für andere GitHub-Benutzer freigeben, damit diese mit dir an diesem Arbeiten können. | + | |
- | Wähle dazu auf GitHub das Repo an, klicke auf *Settings | + | |
- | + | ||
- | Mit einem gratis Account von GitHub kannst du bis zu drei Collaborators zu einem Repo hinzufügen. | + | |
- | + | ||
- | === - Diff === | + | |
- | + | ||
- | In der Git Bash können die Unterschiede zwischen zwei Files, normalerweise zwei unterschiedliche Versionen des gleichen Files, ganz einfach dargestellt werden: | + | |
- | ```bash | + | |
- | diff file1 file2 | + | |
- | ``` | + | |
=== - Branches === | === - Branches === | ||
Zeile 239: | Zeile 295: | ||
TODO | TODO | ||
- | ==== - Alternativen zu GitHub | + | === - Alternativen zu GitHub === |
Es gibt andere Dienste, die in etwa das Gleiche anbieten wie GitHub, wie z.B. *Bitbucket*. | Es gibt andere Dienste, die in etwa das Gleiche anbieten wie GitHub, wie z.B. *Bitbucket*. | ||
- | ==== - Git-Clients | + | === - Git-Clients === |
Git-Clients sind Programme mit graphischen Oberflächen, | Git-Clients sind Programme mit graphischen Oberflächen, | ||