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.

In Pocket speichern vorlesen Druckansicht 5 Kommentare lesen

(Bild: Stokkete/Shutterstock.com)

Lesezeit: 3 Min.
Inhaltsverzeichnis

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.

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.

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

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)