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 22:27] – [2.3 Mit GitHub arbeiten] 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 [[talit:git#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.
  
 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
-```+</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. 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.
  
Zeile 205: Zeile 209:
 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!"
  
-// Auf GitHub pushen+Auf GitHub pushen
 git push git push
 </code> </code>
 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 "describe your commit here, explain how you solved merge conflict" git commit -am "describe your commit here, explain how you solved merge conflict"
  
-// Auf GitHub pushen+Auf GitHub pushen
 git push git push
-```+</code>
  
 ==== - 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
-```+</code>
 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, z.B. 48k845173f... Die Nummern der Commits findest du mit dem Befehl: 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 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. 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
-```+</code>
 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
-```+</code>
 Weitere Infos zu diesem Thema findest du hier: https://git-scm.com/docs/git-diff Weitere Infos zu diesem Thema findest du hier: https://git-scm.com/docs/git-diff
  
Zeile 271: 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 ===
  • talit/git_github.1643840875.txt.gz
  • Zuletzt geändert: 2022-02-02 22:27
  • von sca