Wie bekomme ich die Eltern eines Merge Commits in Git?
140
Einige Git-Befehle nehmen das übergeordnete Element als Revision. andere (wie git revert) als übergeordnete Nummer. Wie man die Eltern für beide Fälle bekommt. Ich möchte den Befehl "Grafisches Protokoll" nicht verwenden, da häufig ein langer Baum nach unten gescrollt werden muss, um das zweite übergeordnete Element zu finden.
git rev-list kann auch die Hashes der Eltern anzeigen, obwohl zuerst der Hash für ein Commit aufgelistet wird:
$ git rev-list --parents -n 1 <commit>
Wenn Sie die Eltern untersuchen möchten, können Sie sie direkt mit Karat als <commit>^1und bezeichnen <commit>^2, z.
git show <commit>^1
Dies verallgemeinert; Für eine Octopus-Zusammenführung können Sie sich auf das n- te übergeordnete Element als beziehen <commit>^n. Sie können sich auf alle Eltern mit beziehen <commit>^@, obwohl dies nicht funktioniert, wenn ein einzelnes Commit erforderlich ist. Zusätzliche Suffixe können nach dem n erscheinen th Mutter Syntax (zB <commit>^2^, <commit>^2^@), während sie nicht nach ^@( <commit>^@^nicht gültig). Weitere Informationen zu dieser Syntax finden Sie in der rev-parseManpage.
Beantwortung meiner eigenen Frage: Die Ergebnisse von 'git rev-list --parents -n 1 <somehash>' sind: <somehash> <parent1> <parent2>. Dh die Eltern sind eins nummeriert.
git log
undgit show
sehr unterschiedliche Dinge ausgeben, wenn es nur einen Elternteil gibt. Bevorzugengit log
Sie, wenn Sie Konsistenz wünschen.git (v2.17.1)
. Ich sehe keineMerge
Datei in dergit log -1
Ausgabe.Das Folgende ist die einfachste Möglichkeit, die Eltern einer Zusammenführung anzuzeigen
quelle
git cat-file -p 3706454
ist das gleiche, aber noch kürzer :)git log --pretty=raw -1 3706454