如何在git中获取合并提交的父级?

Cas*_*ash 126 git merge

一些git命令将父级作为修订; 其他(如git revert),作为父母号码.如何在两种情况下找到父母.我不想使用图形日志命令,因为通常需要向下滚动一棵长树才能找到第二个父级.

Cas*_*bel 160

简单git log <hash>调用合并提交显示其父项的缩写哈希:

 $ git log -1 395f65d
 commit 395f65d438b13fb1fded88a330dc06c3b0951046
 Merge: 9901923 d28790d
 ...
Run Code Online (Sandbox Code Playgroud)

git 父母根据他们的数字输出父母:第一个(最左边)哈希是第一个父母,依此类推.

如果您想要的只是哈希值,那么两个等价的选择是:

$ git log --pretty=%P -n 1 <commit>
$ git show -s --pretty=%P <commit>
Run Code Online (Sandbox Code Playgroud)

git rev-list 也可以显示父母的哈希值,但它会首先列出提交的哈希值:

$ git rev-list --parents -n 1 <commit>
Run Code Online (Sandbox Code Playgroud)

如果你要检查的家长,你可以参考他们直接与克拉为<commit>^1<commit>^2,例如:

git show <commit>^1
Run Code Online (Sandbox Code Playgroud)

这确实概括了; 对于章鱼合并,您可以将第n 父母称为<commit>^n.您可以引用所有父母<commit>^@,但是当需要单个提交时,这不起作用.附加后缀可以在n之后出现父语法(例如<commit>^2^,<commit>^2^@),而它们不是之后能^@(<commit>^@^无效).有关此语法的更多信息,请阅读rev-parse手册页.

  • 回答我自己的问题:'git rev-list --parents -n 1 &lt;somehash&gt;' 的结果是:&lt;somehash&gt; &lt;parent1&gt; &lt;parent2&gt;。即,父母是编号的。 (3认同)
  • 当只有一个父母时,`git log`和`git show`输出非常不同的东西.如果你想要一致性,首选`git log`. (3认同)

小智 29

以下是我发现查看合并父母的最简单方法

git show --pretty=raw 3706454
Run Code Online (Sandbox Code Playgroud)

  • `git cat-file -p 3706454`是一样但更短:) (14认同)