Wie kann ich bei einem lokalen / Remote-Zweigstellennamen den Hash des Commits erhalten, auf den dieser Zweig verweist?
91
Der Befehl git rev-parse
ist dein Freund, zB:
$ git rev-parse development
17f2303133734f4b9a9aacfe52209e04ec11aff4
... oder für einen Remote-Tracking-Zweig:
$ git rev-parse origin/master
da1ec1472c108f52d4256049fe1f674af69e785d
Dieser Befehl ist im Allgemeinen sehr nützlich, da er alle Arten der Angabe von Zweignamen analysieren kann git
, z. B.:
git rev-parse master~3
git rev-parse HEAD@{2.days.ago}
... usw.
foo
, können Sie Folgendes tun:git log --pretty=format:'%H'
def BranchHash = sh "git rev-parse ${BRANCH-NAME}
Ich bekomme :fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
. Was ist falsch?Die Hashes werden unter
.git/refs/
z.git/refs/heads/master
Verwenden Sie es jedoch programmatisch,
git rev-parse
wie von Mark Longair vorgeschlagen, da es sicherer ist.quelle
Vergessen Sie nicht, dass Git seit Git 2.19 (Q2 2018) einen Übergang von SHA1-Hashes zu SHA2 vorbereitet: siehe " Warum verwendet Git kein moderneres SHA? "
Mit Git 2.25 (Q1 2020),
git rev-parse
Entwickelt und reflektiert diesen möglichen neuen Hash.Sehen Sie verpflichten fa26d5e , begehen cf02be8 , begehen 38ee26b , begehen 37ab8eb , begehen 0370b35 , begehen 0253e12 , begehen 45e2ef2 , begehen 79b0edc , begehen 840624f , begehen 32a6707 , begehen 440bf91 , begehen 0b408ca , begehen 2eabd38 (28. Oktober 2019), und verpflichten 1bcef51 , verpflichten ecde49b ( 05.10.2019 ) von brian m. Carlson (
bk2204
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 28014c1, 10. November 2019)Die
git rev-parse
Dokumentation enthält jetzt:Mit Git 2.29 (Q4 2020) können Sie sicherstellen, welches Format Sie zum Lesen des Hash-Commits eines Zweigs (oder eines anderen Objekts) verwenden müssen.
Sehen Sie verpflichten e023ff0 , begehen 4feb562 , begehen 8a06d56 , begehen c49fe07 , begehen 02a32db , begehen ceaa4b3 , begehen eff45da , begehen b5b46d7 , begehen c5aecfc , begehen e74b606 , begehen 439d3a1 , begehen 6c2adf8 , begehen de5737c , begehen e0a646e , begehen 6ff6a67 , begehen 831279d , verpflichten b6e5005 , Commit 287bb3a , Commit 22f1824 , Commit db00af9 ,commit 7187eb1 , commit 98de0b2 , commit a5587b8 , commit 66b6d43 , commit 2197f87 , commit c0b65ea , commit d62607d , commit d482c23 , commit 866be6e , commit 4bacb6d , commit 252a4ee , commit 368f3cb , commit abe3db1 , commit 08fbc5d , commit 11b6961 , commit 9e3bd8a , commit d827bce , Commit 094a685 (29. Juli 2020) von Brian M. Carlson (
bk2204
) .SehenCommit 800e6a7 (29. Juli 2020) von Johannes Schindelin (
dscho
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit e0ad957 , 11. August 2020)git config
enthält jetzt in seiner Manpage :Mit Git 2.29 (Q4 2020) wird die kürzlich hinzugefügte SHA-256-Unterstützung in der Dokumentation als experimentell markiert .
Siehe Commit ff233d8 (16. August 2020) von Martin Ågren (
none
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit d1ff741 , 24. August 2020)git
enthält jetzt in seiner Manpage :object-format-disclaimer
enthält jetzt in seiner Manpage :Das gleiche Git 2.29 (Q4 2020) stellen sicher, dass "
git clone
" ( man ) funktioniert, wenn man aus dem SHA-1-Repository klont, währendGIT_DEFAULT_HASH
SHA-256 bereits verwendet wird.Vor 2.29 führte dies zu einem unbrauchbaren Repository, das zur Hälfte behauptet, SHA-256-Repository mit SHA-1-Objekten und -Referenzen zu sein.
Dies wurde korrigiert.
Siehe Commit 47ac970 (20. September 2020) von Brian M. Carlson (
bk2204
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit B28919c , 29. September 2020)quelle