所以我想通过使用git log master --merges -1
我可以得到最新的合并。我想更进一步,只从最新的合并到最后的提交。如何做到这一点?如何获得最新的合并提交git中的一个分支
例如,假设我有master
,staging
,feature1
和feature2
分支。我将feature1
合并为staging
,然后合并为master
。然后,我会在feature2
之后做同样的事情。如何在合并feature2
之间发生这种情况?
所以我想通过使用git log master --merges -1
我可以得到最新的合并。我想更进一步,只从最新的合并到最后的提交。如何做到这一点?如何获得最新的合并提交git中的一个分支
例如,假设我有master
,staging
,feature1
和feature2
分支。我将feature1
合并为staging
,然后合并为master
。然后,我会在feature2
之后做同样的事情。如何在合并feature2
之间发生这种情况?
在git log master --merges -1
之后,查看该合并的两个父提交。然后发出git log <parent1>..<parent2> --right-only --no-merges --format=format:%H
以列出来自feature2
分支的提交。
感谢你的这一点,它非常简单,我认为这个问题的答案不会太过沉重。 –
'--right-only'只有对称差异才有意义,'commit1 ... commit2'(三个点)。仅使用两个点时,应该使用或不使用“--right-only”来得到相同的结果。 – torek
你试过了--children
的标志吗?
git log master --children --merges -1
或者你可以尝试
我给了它一个镜头,但该命令似乎只给予主人的最新合并,并不包括任何孩子。 –
你可以试试[kohsuke的方法git-children-of](https://gist.github.com/kohsuke/7590246)。你只需要管理你的第一个命令的结果。 –
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' '
--children 打印也提交(其形式为 “提交的孩子......”)的儿童。
因此grep "^${COMMIT}"
将确保输出将是以上次合并提交开始的行。
你问过“孩子提交”,但你的例子和接受的答案似乎是寻找*父母*提交,这是相当简单(和xarthnax的答案是正确的)。如果您绘制提交图,概念会变得更清晰。语法'A..B'的意思是“让我从'B'开始找到所有提交并通过它的历史回溯;然后,从那个列表中*丢弃*从'A开始可以找到的任何提交并且回顾它的历史。“ – torek
@torek我相信你是对的,对不起。让我编辑我的问题,以供未来寻找此问题的人使用。 –