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, diecommit
enthalten (HEAD
falls nicht definiert).git branch --no-contains <commit>
: Nur Branches aufführen, diecommit
nicht enthalten (HEAD
falls nicht definiert).git branch --merged <commit>
: Nur Branches aufführen, die voncommit
erreicht werden könnengit branch --no-merged <commit>
: Nur Branches aufführen, die nicht voncommit
erreicht 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 checkout
kann 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 reset
setztHEAD
in 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 #
HEAD
verweist 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
HEAD
direkt 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,HEAD
verweist neu auf diesen Branchgit branch foo
# Gleich wie oben,HEAD
befindet sich aber noch im „detached state“git tag foo
# Neuer Tag foo, welcher sich auf den letzten Commit bezieht.HEAD
verbleibt im „detached state“