Und ein halbes Jahr ist noch nicht vergangen: Das Versionskontrollsystem Git 2.29 wurde veröffentlicht



Hallo,% username%, heute tolle Neuigkeiten: In der Public Domain erschien Release Distributed Control System Version 2.29.0 der Git . Wahrscheinlich lohnt es sich auf Habré nicht zu sagen, was es ist, da Git immer noch eines der besten Systeme ist.



Die neue Version enthält 627 Änderungen auf einmal, die von 89 Entwicklern vorgenommen wurden. Wir werden Sie über die wichtigsten Änderungen und Verbesserungen im Rahmen des Schnitts informieren.



  • SHA-256 SHA-1 . Git . . , SHA-1 , Git . SHA3-256, SHA2-256, SHA2 Git . , , . , , - — .


  • Jetzt hat Git die Möglichkeit hinzugefügt, beim Erstellen eines Repositorys ein neues Objektformat einzuschließen:


$ git init --object-format=sha256 repo
   Initialized empty Git repository in /home/ttaylorr/repo/.git/
 
   $ cd repo
   $ echo 'Hello, SHA-256!' >README.md
   $ git add README.md
   $ git commit -m "README.md: initial commit"
   [master (root-commit) 6e92961] README.md: initial commit
    1 file changed, 1 insertion(+)
    create mode 100644 README.md
 
   $ git rev-parse HEAD
   6e929619da9d82c78dd854dfe237c61cbad9e95148c1849b1f96ada5ee800810


Sie können nur zwischen SHA-1 und SHA-256 wählen. Es gibt keine Möglichkeit, verschiedene Hashes in einem Repository zu kombinieren.



  • Die Befehle git fetch und git push unterstützen jetzt Ausschlussverknüpfungsspezifikationen, die die Regeln für den Abgleich von Verknüpfungen zwischen Zweigen in lokalen und externen Repositorys erweitern. Diese Funktion ist in Situationen nützlich, in denen einige Zweige nicht nur ausgewählt, sondern auch von der Zuordnung ausgeschlossen werden müssen. Wenn Sie also alle "refs / Heads / *" - Zweige mit Ausnahme eines "refs / Heads / ref-to-exclude" auschecken müssen, bevor Sie die vollständige Liste mit diesem Skript angeben müssen:


   $ git ls-remote origin 'refs/heads/*' |
     grep -v ref-to-exclude |
     awk '{ print $2:$2 }' |
     xargs git fetch origin


  • Jetzt gibt es einen Ausnahmeoperator "^". Ausdrücke mit diesem Operator akzeptieren Vorlagen, können jedoch nicht auf Objektkennungen verweisen. Ein Befehl, der den neuen Operator verwendet, könnte folgendermaßen aussehen:


   $ git fetch origin 'refs/heads/*:refs/heads/*' ^refs/heads/ref-to-exclude


Darüber hinaus können Sie in den Einstellungen Ausschlüsse verwenden:



   $ git config --add remote.origin.fetch ^refs/heads/foo


  • Das "Git Shortlog" bietet jetzt die Möglichkeit, Commits nach dem Inhalt der zusätzlichen Felder "Reviewed-by:" und "Coauthored-by:" zu gruppieren, nicht nur nach Autor oder Committer. Wenn Sie also eine Liste der am aktivsten überprüfenden Entwickler anzeigen müssen, benötigen Sie einen Befehl:


 $ git shortlog -ns --group=trailer:reviewed-by v2.28.0.. | head -n5
    40  Eric Sunshine
    10  Taylor Blau
     4  brian m. carlson
     2  Elijah Newren
     1  Jeff King


  • Beim Start können mehrere --group-Anweisungen angegeben und die Option --format verwendet werden. Um die Mitautoren oder Mitwirkenden im Auge zu behalten, müssen Sie nun Folgendes angeben:


   $ git shortlog -ns --group=author --group=trailer:co-authored-by
   $ git shortlog --format="...helped %an on %as" --group=trailer:helped-by v2.28.0..v2.29.0


  • Wenn während eines Git-Merge-Vorgangs ein Konflikt auftritt, wird der Header der Commit-Nachricht jetzt in Klammern gesetzt, um die Daten vom Commit explizit von den Git-Diagnosemeldungen zu trennen.
  • Die Entwickler brachten die zweite Version des Git-Kommunikationsprotokolls zurück, die in der Version 2.27 deaktiviert war. Somit wurde ein Fehler behoben, der zu Stabilitätsproblemen führte.
  • Die Option "--first-parent" wurde dem Befehl git bisect hinzugefügt, mit dem eine Revision erkannt wird, um die Auswahl der Commits zwischen der bekannten Arbeitsrevision und der Revision zu ändern, bei der das Problem aufgetreten ist.


Sie können alle Neuerungen sehen hier .






All Articles