如何在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我相信你在这一点上是对的,抱歉这个错误。让我编辑我的问题,以供将来搜索此问题的人使用。