Git ist eine moderne plattformübergreifende freie Sourcecodeverwaltungs Software. Git ist sehr flexible und kann auch Offline verwendet werden – lokal auf dem Rechner.
Grundbegriffe
Repos | Sourcecode-Speicher mit History |
Commits | Schappschüsse des Filesystems |
Commit History | Verkettung der Schnappschüsse / Commits |
Root Commit | Das allererste Commit |
Branches | Verzweigung |
Aufbau eines Commits
Filesystem-Schnappschuss (Files und Verzeichnisse) |
Metadaten (Name, Datum, Kommentar…) |
Zeiger auf das letzte Commit (beim Ersten leer, ansonsten Hashwert des vorhergehenden Commits) |
Hashwert (Aus allen Daten des Commits) |
Git – Pointers
1) | Head-Pointer |
2) | Master-Pointer |
Basisfunktionen
Version von Git anzeigen:
> git --version
git config –global user.name “<Name>” | Festlegen des eigenen Namens |
git config –global user.email “<Email>” | Festlegen der eigenen Emailadresse |
git init <name> | Neues Repo mit <name> anlegen |
git status | Überblick über das aktuelle Repo |
git add <filename> | Änderung hinzufügen (Staging) |
git add . | Alle neuen Änderungen übernehmen |
git commit -m “<Kommentar>” | Commit erstellen |
git log | Zeigt History an |
git log — online | Zeigt verkürzte History an |
git checkout <Hashwert> | Wechselt den Head-Pointer auf den Commit mit dem <Hashwert> |
git checkout master | Setzt den Head-Pointer wieder auf den Master Branch |
git revert <Hashwert> | Macht den Commit <Hashwert> rückgänging Anmerkung: Commit Message wird angezeigt, welche noch geändert werden könnte. Standard Editor VIM mit :qa verlassen |
git reset –hard <Hashwert> | Abhängen eines Commits aus der History (dangeling) |
git branch <name> | Neuer Branch erstellen |
git branch | Alle Branch-Pointer anzeigen |
git checkout <Branch-Name> | Wechselt in den angegebenen Branch |
git merge <Branch-Name> | Führt einen merge mit dem <Branch-Name> durch |
Mergen – “fast-forward”
- git checkout master
- git merge <Branch-Name>
Visialisierungen mit GitViz
Arbeiten mit Git Remote-Server
Push | Übermittelt lokale Änderungen auf den Server |
Fetch | Holt Änderungen vom Remote-Server ab |
Pull | Holt Änderungen vom Remote-Server ab und integriert diese im eigenen Code |
Clone | Erstellt eine Kopie auf dem lokalen PC |
git clone <URL_Repo> | Erstellt eine lokale Kopie des Repos (Bsp: https://github.com/Readify/GitViz.git) |
git remote –verbose | Zeigt den verwendete Kurzname / URL des Repos an (Meist: origin) |
git push | Übermittelt die lokalen Commits zum Remote-Server |
git pull | Holt alle Änderungen vom Remote-Server und merged diese ins lokale Repo |
Im Beispiel unten, sehen wir ein Repo mit verschiedenen Git-Pointers:
- HEAD -> Master enthält Änderungen, welche remote noch nicht vorhanden sind
- Die Pointers “origin/master” und origin/HEAD sind lokal und remote identisch
- Es gibt einen Branch “origin/netcore”
- Es gibt einen Tag 1.0.2.0
Konflikt zwischen Server und lokalem Repo korrigieren
- git status -> zeigt an wo die Probleme sind
- Problem in den Dateien beheben -> werden durch Kommentare von Git hervorgehoben
- git add <Dateiname> -> Änderungen korrigiert
- git commit -m “<Bemerkung>”
- git push -> Konsolidierte Dateien auf remote Server übertragen
Nützliches
Offizielle Git Webseite https://git-scm.com/
Readify GitViz https://github.com/Readify/GitViz
GitHub – Git cheat sheet https://training.github.com/downloads/de/github-git-cheat-sheet/
Git cheat sheet als PDF https://rhoenerlebnis.de/_upl/de/_pdf-seite/git_cheatsheet_de_white.pdf