如何在合并到trunk之前和之后获取分支提交列表

时间:2015-09-24 13:06:24

标签: git

在git中,可以使用以下命令获取尚未合并到master中的某个分支xxxx的分支提交列表:

$ git rev-list xxxx --not master
<hash1>
<hash2>
<hash3>

例如,如果分支xxxx中有3个提交,您将获得3行中3个哈希的列表:

git rev-list xxxx --not <hash3>^

但是,如果我将此分支合并为master,则无法再使用相同的命令检索此哈希列表;我得到一个空列表,因为提交现在在master中。

我想知道是否有人可以在合并后生成此列表的命令。优选地,无论提交是否已合并到主控,命令都将以相同的方式工作。

以下基本上可以解决问题:

<hash3>

但是,我想在脚本中使用它,并且我不想提供{{1}}作为参数 - 我需要以编程方式找到它。

1 个答案:

答案 0 :(得分:0)

https://stackoverflow.com/a/4991675/515973https://stackoverflow.com/a/30563070/515973中找到了“最古老的祖先”问题的解决方案。

git rev-list $(diff -u1 <(git rev-list --first-parent xxxx) <(git rev-list --first-parent master)|sed -ne 's/^ //p')..xxxx

或者,如果您创建有用的“最古老祖先”别名,

oldest-ancestor = !bash -c 'diff -u1 <(git rev-list --first-parent "${1:-master}") <(git rev-list --first-parent "${2:-HEAD}") | sed -ne \"s/^ //p\"' -

然后解决方案是:

git rev-list $(git oldest-ancestor master xxxx)..xxxx

我进行了测试,它适用于合并和未合并的分支,但不适用于快进合并。