Wie die Anfänge begehen verweisen?
-
06-07-2019 - |
Frage
Ich habe ein Skript bekam, dass die anfängliche begehen in einem Repository verweisen muss. git hat die besondere Referenz HEAD
, aber nicht über die entsprechenden TAIL
. Ich kann nichts in git help rev-parse
finden, um mir zu helfen scheint.
Hier ist, was ich tun möchte:
git show TAIL
Hier ist eine Option, die ich habe:
git show `git log --reverse | if read a commit ; then echo $commit ; fi`
Das ist ziemlich hacky und hängt von der Ausgabe von git log nicht zu ändern.
Im Moment habe ich Tag nur die ersten begehen und diese als meine Refspec. Ich möchte jedoch ein allgemeines Werkzeug lösen, so dass nicht eine gute Option.
Lösung
Sie nicht git-log für Scripting:. Entweder git-rev-Liste oder git-log mit dem angegebenen benutzerdefinierten Format ( "--format =
Es gibt zusätzliches Problem mit Ihrer Frage: Es existieren kann mehr als ein so TAIL root commit (elternlos Festschreibung) in einem Repository (auch wenn wir getrennte Zweige diskontieren, wie 'html', " Mann‘und 'todo' in git.git Repository). Dies wird zur Folge haben in der Regel von einem separaten Projekten verbinden, oder separat entwickelt Teilprojekt mit subtree merge von.
Zum Beispiel Git Repository 6 root verpflichtet: git-gui, gitk (subtree-Fusion), gitweb (fusionierte, nicht mehr separat entwickelt), git Mail-Tools (fusionierten sehr früh in der Projektentwicklung) und p4 schnelle -export (vielleicht zufällige). Das zählt nicht Wurzeln von ‚html und‚Menschen‘Zweige‚Convenience‘Zweige, die vorab generierte Dokumentation enthalten, und‚todo‘Zweig mit ToDo-Liste und Skripten.
Wenn Sie 1.7.4.2 oder neuer haben git, können Sie die --max-parents
Option verwenden:
$ git rev-list --max-parents=0 HEAD
Sie können aber Liste aller elternlos (root) erhalten begeht zugänglich von Stromzweig mit:
$ git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"
Andere Tipps
git rev-list HEAD | tail -n 1
ist eine stabilere Option.