Git #
git branch #
Wichtige Befehle #
git branch -m <branch>: Branch umbenennen$git branch -t <branch>: Für neuen Branch auch entfernten Branch aufsetzengit branch --edit-description <branch>: Erklärenden Text zu Branch editierengit branch --contains <commit>: Nur Branches aufführen, diecommitenthalten (HEADfalls nicht definiert).git branch --no-contains <commit>: Nur Branches aufführen, diecommitnicht enthalten (HEADfalls nicht definiert).git branch --merged <commit>: Nur Branches aufführen, die voncommiterreicht werden könnengit branch --no-merged <commit>: Nur Branches aufführen, die nicht voncommiterreicht werden können
git checkout #
- Ein Klon checkt nur den
master-Branch aus. Um einen anderen remote Branch auszuchecken, genügt eingit checkout <Name des entfernten Branches> git checkoutkann auch dazu benutzt werden, um einzelne Dateien in einem bestimmten Commit auszuchecken:git checkout <commit> <file>, oder die Kurzformgit checkout <file>fürgit checkout HEAD <file>
git cherry #
Findet Commits, die noch nicht in upstream integriert wurden. git cherry [-v] [ [ []]]
Beispiel:
git cherry -v master <branch> - Zeige alle Commits von branch, die noch nicht in master gemergt wurden
git log #
git log <base-branch>..<branch>: Commits anzeigen, die in branch, aber nicht in<base-branch>vorhanden sind
git reset #
git resetsetztHEADin einen bestimmten Status zurück- Letzter Commit löschen:
git reset –hard „HEAD^“
git remote #
Verwaltet die registrierten Repositorien (Manpage). git remote add # Hinzufügen eines neuen entfernten Repositorium
Anmerkungen zu Branches und Commits #
HEADverweist im Normalfall auf einen benannten Branch (und nicht auf einen spezifischen, beispielsweise den letzten, Commit!)- Wird hingegen ein früherer Commit in einem Branch geöffnet, verweist
HEADdirekt auf diesen Commit. Dies wird auch als „detached HEAD state“ bezeichnet - Wichtig ist, dass ein Commit, der auf Änderungen basiert, die ihrerseits nicht aus dem neusten Commit in einem Branch abgeleitet werden, von nichts referiert werden können. Um dies zu ändern, gibt es drei Möglichkeiten:
git checkout -b foo# Abgeleitete Commits werden in einem neuen Branch foo abgelegt,HEADverweist neu auf diesen Branchgit branch foo# Gleich wie oben,HEADbefindet sich aber noch im „detached state“git tag foo# Neuer Tag foo, welcher sich auf den letzten Commit bezieht.HEADverbleibt im „detached state“