Versionsverwaltung: Git 2.35 vereinfacht das Zurückstellen von Änderungen
Neben einem neuen Parameter für den stash-Befehl bringt das Release zusätzliche Einstellungen für die Log-Ausgabe und einen neuen Modus für Merge-Konflikte.
Die Versionsverwaltung Git ist in Version 2.35 erschienen. Das Release ermöglicht das Zurückstellen der Änderungen in der Staging-Area und bringt Erweiterungen beim Logging und für das Zusammenspiel mit dem Sparse-Enabled Index mit. Ein neuer Parameter soll zudem den Umgang mit Merge-Konflikten übersichtlicher gestalten.
Zurückgestellter Arbeitsbereich
Der Befehl git stash
stellt alle Änderungen an der Arbeitskopie zeitweise zurück, was sinnvoll sein kann, um vor dem eigentlichen git commit
andere Aufgaben zu erledigen. Version 2.35 führt einen neuen Modus ein: git stash --staged
stellt nur solche Änderungen zurück, die sich aktuell in der Staging-Area befinden. Dort sind die Inhalte abgelegt, die in den nächsten Commit einfließen sollen.
Auf die Weise sollen sich komfortabler nur die für den Commit vorgesehenen Änderungen auf den Stash legen lassen, statt sie über git stash -p
manuell auszuwählen. Später lassen sie sich über git stash pop
vom Stash holen, um sie anschließend mit git commit
ins Repository einzupflegen.
Weniger Details, mehr Überblick
Seit der im August 2021 veröffentlichten Version 2.33 kann Git die Ausgabe von git log
mit der von git describe
kombinieren. Dafür existieren einige Filtermöglichkeiten, die Version 2.35 um zusätzliche Einstellungen erweitert: So kann sie nur leichtgewichtige Tags enthalten ('%(describe:tags=<bool>)'
), und die Länge der Hexidezimalstellen für Hashes lässt sich über %(describe:abbrev=<n>)
festlegen.
Details finden sich im zugehörigen Pull Request, und ein Blogbeitrag auf GitHub zeigt den Einsatz des verkürzten kombinierten Befehls
$ git log -8 --format='%(describe:exclude=*-rc*,abbrev=13)'
v2.34.1-646-gaf4e5f569bc89
v2.34.1-644-g0330edb239c24
v2.33.1-641-g15f002812f858
v2.34.1-643-g2b95d94b056ab
v2.34.1-642-gb56bd95bbc8f7
v2.34.1-203-gffb9f2980902d
v2.34.1-640-gdf3c41adeb212
v2.34.1-639-g36b65715a4132
als Abkürzung der kombinierten Befehle für log
und describe
:
$ git log -8 --format='%H' | xargs git describe \
--exclude='*-rc*' --abbrev=13
Merge-Konflikte im Blick
Das Release führt zudem eine Ergänzung zum Auffinden und Beheben von Merge-Konflikten ein: Die Einstellung merge.conflictStyle
kennt neuerdings den Modus zdiff3
. Er zeigt wie diff3
die jeweiligen Änderungen, die den Konflikt verursachen, zusammen mit der Basis des Merge.
Das "z" in zdiff3
steht für "zealous", was sich mit eifrig übersetzen lässt: Der Modus versucht dienstbeflissen, die Gemeinsamkeiten der Änderungen, die den Konflikt verursachen, nach oben zu stellen und damit die Unterschiede zu konkretisieren.
Außerdem bringt das Release einige Ergänzungen im Zusammenspiel mit dem in Version 2.34 eingeführten Sparse-Enabled-Index mit. Entwicklerinnen und Entwickler können ihn neuerdings auch mit den Befehlen git reset
, git diff
, git blame
, git fetch
, git pull
verwenden.
Weitere Neuigkeiten in Git 2.35 – wie unter anderem das im vorigen Release eingeführte Signieren mit SSH-Schlüsseln – lassen sich den Release Notes entnehmen. Eine ausführliche Beschreibung der wichtigsten Neuerungen finden sich in einem Blogbeitrag auf GitHub.
(rme)