在git中获取合并提交的父母

鉴于合并提交,我怎么能得到它的父母? 一些git命令把父母作为一个修订; 其他人(如git revert ),作为父母号码。 我想知道如何得到这两种情况下的父母。 我不想使用graphics日志命令,因为通常需要向下滚动长树才能find第二个父级。

另外请注意,正常的日志输出显示父母的缩写哈希,不需要滚动:

  commit 395f65d438b13fb1fded88a330dc06c3b0951046 Merge: 9901923 d28790d ... 

git总是按父代号的顺序打印它们:第一个散列是第一个父代的,依此类推。

如果你只是想要哈希,两个等价的select:

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

rev-list也可以显示提交的父哈希值。 它会首先列出提交的哈希,然后是父母的哈希。

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

如果你想检查父母,你可以用克拉直接引用它们作为<commit>^1<commit>^2 ,例如:

 git show <commit>^1 

这是一般化的; 对于章鱼合并,你可以参考第n 父母作为<commit>^n 。 您可以使用<commit>^@来引用所有的父母,但是当需要单个提交时,这不起作用。 额外的后缀可以在第n 父语法之后出现(例如<commit>^2^<commit>^2^@ ),而^@<commit>^@^无效后它们不能)。 有关此语法的更多信息,请阅读rev-parse手册页。

还要注意,正常的日志输出确实显示父母的缩写哈希:

  commit 395f65d438b13fb1fded88a330dc06c3b0951046 Merge: 9901923 d28790d ... 

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

 git show --pretty=raw 3706454