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
talit:git_github [2022-02-02 21:37] scatalit: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// seit dem letzten Snapshot. Über das Tool kann man dann auch ältere Snapshots zurückgreifen. Die Informationen zu den verschiedenen Snapshots wird typischerweise in einem versteckten Ordner abgelegt. Im Beispiel von oben wird also nicht die ganze Abschlussarbeit kopiert, sonder das Tool merkt sich nur, dass das Fazit neu hinzugekommen ist. 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// seit dem letzten Snapshot. Über das Tool kann man dann auch ältere Snapshots zurückgreifen. Die Informationen zu den verschiedenen Snapshots wird typischerweise in einem versteckten Ordner abgelegt. Im Beispiel von oben wird also nicht die ganze Abschlussarbeit kopiert, sonder das Tool merkt sich nur, dass das Fazit neu hinzugekommen ist.
 +
 +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**: Wann immer ihr zusammen am gleichen Code arbeitet, sollt ihr dies über GitHub tun.  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**: Wann immer ihr zusammen am gleichen Code arbeitet, sollt ihr dies über GitHub tun. 
Zeile 55: Zeile 59:
  
 Der wichtigste git-Befehl ist Der wichtigste git-Befehl ist
-```+<code bash>
 git status git status
-```+</code>
  
 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**, tippe Um ein **neues Git Repository zu initialisieren**, tippe
-```+<code bash>
 git init git init
-```+</code>
  
 Dein lokales Repository besteht aus drei **Instanzen**, die von git verwaltet werden. Die erste ist das **working dir**, welches die *echten Dateien* enthält. Die zweite ist der **Index**, welcher als *Zwischenstufe* agiert und zu guter Letzt noch der **HEAD**, der auf deinen *letzten Commit* zeigt. Dein lokales Repository besteht aus drei **Instanzen**, die von git verwaltet werden. Die erste ist das **working dir**, welches die *echten Dateien* enthält. Die zweite ist der **Index**, welcher als *Zwischenstufe* agiert und zu guter Letzt noch der **HEAD**, der auf deinen *letzten Commit* zeigt.
  
-{{:talit:git_wokingdir_index_head.png?400|}}+{{:talit:git_wokingdir_index_head.png?552|}}
  
 Hast du gerade ein Repository initialisiert, werden nach `git status` bereits vorhandene Dateien in rot angezeigt: Diese Files befinden sich erst im *working dir* und sind deshalb *untracked*, sie werden also von Git ignoriert. Damit ein oder mehrere Files mit git verwaltet werden können, müssen sie dem **Index hinzugefügt** werden: Hast du gerade ein Repository initialisiert, werden nach `git status` bereits vorhandene Dateien in rot angezeigt: Diese Files befinden sich erst im *working dir* und sind deshalb *untracked*, sie werden also von Git ignoriert. Damit ein oder mehrere Files mit git verwaltet werden können, müssen sie dem **Index hinzugefügt** werden:
  
 **Einzelnes File** dem **Index hinzuzufügen**: **Einzelnes File** dem **Index hinzuzufügen**:
-```+<code bash>
 git add <filename> git add <filename>
-```+</code>
 **Alle Files** (auch in Unterordnern) dem **Index hinzuzufügen**: **Alle Files** (auch in Unterordnern) dem **Index hinzuzufügen**:
-```+<code bash>
 git add . git add .
-```+</code>
 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**, also **committen**: Nun musst du deine **Änderungen noch bestätigen**, also **committen**:
-```+<code bash>
 git commit -am "initial commit" git commit -am "initial commit"
-```+</code>
 Mit diesem ersten Commit hast du eine erste Version erstellt, quasi einen ersten *Snapshot*. Der letzte Teil des Befehls ist eine **Commit-Nachricht**, für welche folgende Regeln gelten: Mit diesem ersten Commit hast du eine erste Version erstellt, quasi einen ersten *Snapshot*. Der letzte Teil des Befehls ist eine **Commit-Nachricht**, für welche folgende Regeln gelten:
 * 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/Snapshot** erstellen möchtest, gehst du wie oben beschrieben und hier kurz zusammengefasst vor: Nun kannst du weiter an deinen Dokumenten arbeiten. Immer, wenn du einen **neuen Commit/Snapshot** erstellen möchtest, gehst du wie oben beschrieben und hier kurz zusammengefasst vor:
-``` +<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 "describe your commit here. no nonsense please!" git commit -am "describe your commit here. no nonsense please!"
  
-// vergewissere dich, dass alles i.O.+vergewissere dich, dass alles i.O.
 git status git status
-```+</code>
 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/Ordner von Git entfernen** ohne es von lokalem Dateisystem zu löschen **Datei/Ordner von Git entfernen** ohne es von lokalem Dateisystem zu löschen
-```+<code bash>
 git rm --cached fileName git rm --cached fileName
 git rm -r --cached folderName git rm -r --cached folderName
-```+</code>
  
 **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
-```+</code>
  
  
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://github.com/username/repo_name.git git clone https://github.com/username/repo_name.git
-```+</code>
  
-=== - Mit GitHub arbeiten ===+==== - Mit GitHub arbeiten ====
  
-Hast du lokal auf deinem Computer Änderungen vorgenommen und diese committed (siehe [Mit Git arbeiten](Mit_Git_arbeiten)), so kannst du diese auf GitHub **pushen**: +Hast du lokal auf deinem Computer Änderungen vorgenommen und diese committed (siehe [[talit:git#mit_git_arbeiten|Mit git arbeiten]]), so kannst du diese auf GitHub **pushen**: 
-```+<code bash>
 git push git push
-```+</code>
 Gehe nun auf GitHub und vergewissere dich, dass alles geklappt hat. Gehe nun auf GitHub und vergewissere dich, dass alles geklappt hat.
  
-=== - Kollaborationen ====+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 
 +</code> 
 +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 "describe your commit here. no nonsense please!" 
 + 
 +# Auf GitHub pushen 
 +git push 
 +</code> 
 +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 "describe your commit here, explain how you solved merge conflict" 
 + 
 +# Auf GitHub pushen 
 +git push 
 +</code> 
 + 
 +==== - Kollaborationen ====
  
 Du kannst ein privates Repo für andere GitHub-Benutzer freigeben, damit diese mit dir an diesem Arbeiten können. Du kannst ein privates Repo für andere GitHub-Benutzer freigeben, damit diese mit dir an diesem Arbeiten können.
Zeile 200: Zeile 239:
 Mit einem gratis Account von GitHub kannst du bis zu drei Collaborators zu einem Repo hinzufügen. Mit einem gratis Account von GitHub kannst du bis zu drei Collaborators zu einem Repo hinzufügen.
  
-=== - Diff ===+==== - Diff ===
 + 
 +Mit dem folgenden Befehl werden die sämtliche Änderungen seit dem letzten Commit angezeigt: 
 +<code bash> 
 +git diff HEAD 
 +</code> 
 +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, z.B. 48k845173f... Die Nummern der Commits findest du mit dem Befehl: 
 +<code bash> 
 +git log 
 +</code> 
 +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 
 +</code> 
 +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 
 +</code> 
 +Weitere Infos zu diesem Thema findest du hier: https://git-scm.com/docs/git-diff
  
-In der Git Bash können die Unterschiede zwischen zwei Files, normalerweise zwei unterschiedliche Versionen des gleichen Files, ganz einfach dargestellt werden: 
-``` 
-diff file1 file2 
-``` 
  
 ==== - Weitere GitHub Dinge ==== ==== - Weitere GitHub Dinge ====
Zeile 219: 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://github.com/username git remote add origin https://github.com/username
-```+</code>
 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
-```+</code>
 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
-```+</code>
 Möchte man ein **remote Repository entfernen**, so tippt man Möchte man ein **remote Repository entfernen**, so tippt man
-```+<code bash>
 git remote rm origin git remote rm origin
-```+</code>
  
 === - 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, mit denen man die oben beschriebenen Arbeitsschritte ebenfalls vornehmen kann. Ein Beispiel dafür ist **GitKraken**. Es ist aber empfohlen, sich daran zu gewöhnen, mit der Git Bash zu arbeiten. Einige IDEs wie *Visual Studio* oder *Visual Studio Code* haben einen integrierten Git-Client. Git-Clients sind Programme mit graphischen Oberflächen, mit denen man die oben beschriebenen Arbeitsschritte ebenfalls vornehmen kann. Ein Beispiel dafür ist **GitKraken**. Es ist aber empfohlen, sich daran zu gewöhnen, mit der Git Bash zu arbeiten. Einige IDEs wie *Visual Studio* oder *Visual Studio Code* haben einen integrierten Git-Client.
  
  • talit/git_github.1643837820.txt.gz
  • Zuletzt geändert: 2022-02-02 21:37
  • von sca