如何在 Git 中获得合并提交的父级?

一些 Git 命令将父命令作为修订; 其他命令(如 git revert)作为父命令。我怎样才能找到这两个案子的父母呢?

我不想使用图形日志命令,因为这通常需要向下滚动一个长树来找到第二个父节点。

101453 次浏览

调用 merge 提交的简单 git log <hash>显示了其父级的缩写哈希表:

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

git根据父类的编号输出父类: 第一个(最左边)散列表示第一个父类,依此类推。

如果您想要的只是散列,那么两个等价的选择是:

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

git 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手册页。

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

git show --pretty=raw 3706454