In unregelmäßigen Abständen arbeite ich mit GIT und muss immer wieder überlegen, welchen Befehlt ich benötige. Um Abhilfe zu schaffen eine kurze Übersicht mit einer knappen Erklärung.
Aufbau GIT
Änderungen können in drei Bereichen des lokale Repository passieren:
- Der erste Bereich ist deine Arbeitskopie (Working Directory), welcher die Dateien und Änderungen an den Dateien enthält.
- Der zweite Bereich ist der Index (Staging Directory), welcher als Zwischenstufe agiert und eine Vorschau auf deinen nächsten Commit darstellt.
- Der dritte Bereich ist der HEAD (Repository), der auf deinen letzten Commit zeigt.
Um Änderungen an den Dateien (Working Directory) in die nächste Ebene (Staging Directory) zu übernehmen nutze folgenden Befehl:
git add
* Head (Repository): Alle Änderungen aus der Staging Area werden durch
git commit
zusammengefasst,
Repository auschecken
Erstelle eine Arbeitskopie, indem du folgenden Befehl ausführst:
git clone /pfad/zum/repository
Falls du ein entferntes Repository verwendest, benutze:
git clone username@host:/pfad/zum/repository
Lokale Änderungen: Add und Commit
Du kannst Änderungen zum Index hinzufügen mit
git add git add *
Wenn du sämtliche Änderungen im gewünschter Form zusammen hast, kannst du diese mit einem commit zusammenfassen:
git commit -m "Commit-Nachricht"
Die Änderung befinden sich im HEAD, aber noch nicht im entfernten Repository.
Änderungen hochladen
Die Änderungen sind jetzt im HEAD deines lokalen Repositories. Um die Änderungen an dein entferntes Repository zu senden, führe:
git push origin master
aus. Du kannst master auch mit einem beliebigen anderen Branch ersetzen, mehr über Branches erfährst du später.
Wenn du dein lokales Repository nicht von einem entfernten geklont hast und du diese aber mit einem anderen Repository verbinden möchtest, musst du dieses mit
git remote add origin
hinzufügen. Jetzt bist du bereit, deine Änderungen hochzuladen
Branching
Branches (Deutsch Zweige) werden genutzt, um die Entwicklung zu parallelisieren. Mehrere Entwickler arbeiten an verschiedenen Funktionen, welche parallel entwickelt werden. Der master-Branch ist der „Standard“-Branch, wenn du ein neues Repository erstellst. Du solltest aber für die Entwicklung neue Branches erstellen und diese dann in den Master-Branch zusammenführen (mergen).
Erstelle einen neuen Branch mit dem Namen „feature_xy“ und wechsle zu diesem:
git checkout -b feature_x
Um zum Master zurück zu wechseln:
git checkout master
Und um den eben erstellten Branch wieder zu löschen:
git branch -d feature_x
Ein Branch ist nicht für andere verfügbar, bis du diesen in dein entferntes Repository hochlädst:
git push origin
Update & Merge
Um dein lokales Repository mit den neuesten Änderungen zu aktualisieren, verwende:
git pull
in deiner Arbeitskopie, um die Änderungen erst herunterzuladen (fetch) und dann mit deinem Stand zusammenzuführen (merge).
Wenn du einen anderen Branch mit deinem aktuellen (z.B. master) zusammenführen willst, benutze:
git merge
In beiden Fällen versucht git die Änderungen automatisch zusammenzuführen. Unglücklicherweise ist dies nicht immer fehlerfreimöglich, es kommt zu Konflikten. Du bist verantwortlich, diese Konflikte durch manuelles Editieren der betroffenen Dateien zu lösen. Bist du damit fertig, musst du das git mit folgendem Befehl mitteilen:
git add
Bevor du Änderungen zusammenführst solltest du dir die Differenzen anschauen:
git diff
Tagging
Für eine bessere Verwaltung und Nachvollziehbarkeit empfiehlt es sich Releasestags zu setzen. Du kannst einen neuen Tag z.B.: namens 1.9.2 mit folgendem Befehl erstellen:
git tag 1.0.0 f5ccd1c833ebe7a92c187f89ae42e6b60abba8d4
f5ccd1c833ebe7a92c187f89ae42e6b60abba8d4 ist in diesem Fall die Commit-Id, die du mit deinem Tag referenzieren möchtest. Du erhältst die Liste der Commit-IDs mit:
git log
Du kannst auch weniger Zeichen verwenden als die komplette Commit-Id, jedoch muss der Identifier eindeutig sein. .
Änderungen rückgängig machen
Falls du mal etwas falsch machst kannst du die lokalen Änderungen mit:
git checkout --
auf den letzten Stand im HEAD zurücksetzen. Änderungen, die du bereits zum Index hinzugefügt hast, bleiben bestehen.
Wenn du aber deine lokalen Änderungen komplett entfernen möchtest, so überschreib deinen lokalen Stand mit dem vom entfernten Repository mit folgenden Befehlen:
git fetch origin git reset --hard origin/master
Schnellübersicht
als PDF: Git-Cheat Sheet
Create und Clone
neues Repository erstellen |
git init |
lokales Repository clonen |
git clone /pfad/zum/repository |
entferntes Repository clonen |
git clone username@host:/pfad/zum/repository |
Add und Remove
Änderungen zur Index Stages hinzufügen |
git add |
Alle Änderungen der Index Stage hinzufügen |
git add * |
Änderungen löschen |
git rm |
Commit und Synchronize
Änderungen zur Index Stages hinzufügen |
git commit -m "Commit Nachricht" |
Push Änderungen zum entfernten Repository |
git push origin master |
Lokales Rpository mit dem entfernten Repository verbinden |
git remote add origin |
Lokales Verzeichnis mit den Änderungen aus dem entfernten Verzeichnis updaten |
git pull |
Branches
Neuen Branch erstellen |
git checkout -b |
Zum Master Branch wechseln |
git checkout master |
Branch löschen |
git branch -d |
Den lokalen branch ins das entfernte Verzeichnis pushen |
git push origin |
Merge
Änderungen aus einem anderen Branch mergen |
git merge |
Änderungen zwischen zwei Branches anzeigen |
git diff |
Tagging
Tag erstellen |
git tag |
Commit IDs ausgeben |
git log |
Restore
Arbeitskopie mit der letzten Version aus dem HEAD ersetzen |
git checkout -- |
Weitere Informationen
- Pro Git: https://git-scm.com/book/en/v2/
- Understanding Git Index: https://hackernoon.com/understanding-git-index-4821a0765cf
Beitragsbild: https://pixabay.com/photo-995180/ von User: klimkin