it-swarm.com.de

Wie bekomme ich die Eltern eines Merge Commits in Git?

Einige git-Befehle nehmen das übergeordnete Element als Revision. andere (wie git revert) als übergeordnete Nummer. Wie bekommt man die Eltern für beide Fälle. Ich möchte den grafischen Protokollbefehl nicht verwenden, da häufig ein langer Baum nach unten gescrollt werden muss, um das zweite übergeordnete Element zu finden.

121
Casebash

Ein einfaches git log <hash>, Das für ein Merge-Commit aufgerufen wurde, zeigt abgekürzte Hashes seiner Eltern:

 $ git log -1 395f65d
 commit 395f65d438b13fb1fded88a330dc06c3b0951046
 Merge: 9901923 d28790d
 ...

git gibt Eltern nach ihrer Nummer aus: Der erste (ganz links stehende) Hash ist für die ersten Eltern und so weiter.

Wenn Sie nur die Hashes verwenden möchten, stehen zwei gleichwertige Optionen zur Verfügung:

$ git log --pretty=%P -n 1 <commit>
$ git show -s --pretty=%P <commit>

git rev-list Kann auch die Hashes der Eltern anzeigen, listet jedoch zuerst den Hash für ein Commit auf:

$ git rev-list --parents -n 1 <commit>

Wenn Sie die Eltern untersuchen möchten, können Sie sie direkt mit Karat als <commit>^1 Und <commit>^2 Bezeichnen, z.

git show <commit>^1

Dies verallgemeinert; Für eine Oktopus-Zusammenführung können Sie sich auf das n beziehenth Eltern als <commit>^n. Sie können mit <commit>^@ Auf alle Eltern verweisen, obwohl dies nicht funktioniert, wenn ein einzelnes Commit erforderlich ist. Zusätzliche Suffixe können nach dem n erscheinenth übergeordnete Syntax (z. B. <commit>^2^, <commit>^2^@), wohingegen sie nach ^@ nicht mehr verwendet werden können (<commit>^@^ ist nicht gültig). Weitere Informationen zu dieser Syntax finden Sie in der Manpage rev-parse .

152
Cascabel

Das Folgende ist die einfachste Möglichkeit, die Eltern einer Zusammenführung anzuzeigen

git show --pretty=raw 3706454
29
user1483344