2017-02-18 87 views
0

所以我想通过使用git log master --merges -1我可以得到最新的合并。我想更进一步,只从最新的合并到最后的提交。如何做到这一点?如何获得最新的合并提交git中的一个分支

例如,假设我有master,staging,feature1feature2分支。我将feature1合并为staging,然后合并为master。然后,我会在feature2之后做同样的事情。如何在合并feature2之间发生这种情况?

+0

你问过“孩子提交”,但你的例子和接受的答案似乎是寻找*父母*提交,这是相当简单(和xarthnax的答案是正确的)。如果您绘制提交图,概念会变得更清晰。语法'A..B'的意思是“让我从'B'开始找到所有提交并通过它的历史回溯;然后,从那个列表中*丢弃*从'A开始可以找到的任何提交并且回顾它的历史。“ – torek

+0

@torek我相信你是对的,对不起。让我编辑我的问题,以供未来寻找此问题的人使用。 –

回答

0

git log master --merges -1之后,查看该合并的两个父提交。然后发出git log <parent1>..<parent2> --right-only --no-merges --format=format:%H以列出来自feature2分支的提交。

+0

感谢你的这一点,它非常简单,我认为这个问题的答案不会太过沉重。 –

+0

'--right-only'只有对称差异才有意义,'commit1 ... commit2'(三个点)。仅使用两个点时,应该使用或不使用“--right-only”来得到相同的结果。 – torek

0

你试过了--children的标志吗?

git log master --children --merges -1 

或者你可以尝试

https://gist.github.com/kohsuke/7590246

+0

我给了它一个镜头,但该命令似乎只给予主人的最新合并,并不包括任何孩子。 –

+0

你可以试试[kohsuke的方法git-children-of](https://gist.github.com/kohsuke/7590246)。你只需要管理你的第一个命令的结果。 –

0

git log -1 --merges --pretty=format:"%H"给你的最后一个合并提交SHA。

您可以使用此SHA来筛选git rev-list --all --children的输出,并将结果限制为其父项为给定SHA1的提交。

COMMIT=`git log -1 --merges --pretty=format:"%H"` 
git rev-list --all --children | grep "^${COMMIT}" | cut -f2 -d' ' 

git-rev-list documentation

--children 打印也提交(其形式为 “提交的孩子......”)的儿童。

因此grep "^${COMMIT}"将确保输出将是以上次合并提交开始的行。

相关问题