如何在git中仅获取对分支的最新合并的提交

如何在git中仅获取对分支的最新合并的提交,git,Git,所以我发现我可以使用git log master--merges-1获得最新的master合并。我想更进一步,只从最新的主合并中获取最新的提交。你会怎么做 例如,假设我有master、staging、feature1和feature2分支。我将feature1合并到staging中,然后合并到master中。然后我对feature2做了同样的操作。如何在合并功能2之间发生这种情况?您是否尝试过--children标志 git log master --children --merges -1

所以我发现我可以使用
git log master--merges-1
获得最新的master合并。我想更进一步,只从最新的主合并中获取最新的提交。你会怎么做

例如,假设我有
master
staging
feature1
feature2
分支。我将
feature1
合并到
staging
中,然后合并到
master
中。然后我对
feature2
做了同样的操作。如何在合并
功能2
之间发生这种情况?

您是否尝试过
--children
标志

git log master --children --merges -1
或者你可以试试

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' '
根据,

--儿童 还打印提交的子项(以“提交子项…”的形式)


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

git log master--merges-1
之后,检查该合并的两个父提交。然后发出
git日志--仅限右侧--无合并--format=format:%H
以列出来自
功能2
分支的提交。

我尝试了一下,但该命令似乎只提供了来自master的最新合并,不包括任何子级。您可以尝试。您只需要通过管道传输第一个命令的结果。感谢您的帮助,它非常简单,而且我认为在回答问题时不必过多地使用命令行。
--仅对
仅对对称差异有意义,
commit1…commit2
(三个点)。当只使用两个点时,无论是否使用
——仅正确
,您都应该得到相同的结果。您要求“子提交”,但您的示例和公认的答案似乎是寻找父提交,这相当简单(xarthnax的答案是正确的)。如果绘制提交的图表,概念会变得更加清晰。语法
A..B
的意思是“通过从
B
开始并回顾其历史记录,让我找到所有提交;然后,从该列表中,通过从
A
开始并回顾其历史记录,扔掉我能找到的所有提交。”@torek我相信你在这一点上是对的,抱歉这个错误。让我编辑我的问题,以供将来搜索此问题的人使用。