我有一些分支,这些分支定期合并,即我们可以有A,合并到B中,然后B合并到C中,然后A合并到D和D中C等。假设我有一个提交X,我知道它最初是在A中引入的,然后以某种方式合并到C中(当我执行git log C时,我可以看到它)。有没有办法找出哪个合并(合并提交)将提交X带入分支C?git:找到哪个合并brough提交到当前分支
回答
通常我这样做如下:
git log --oneline --ancestry-path --merges <commit-of-interest>..C
的--ancestry-path
参数这里的关键是:它会导致GIT中,只显示该提交既是一个的<commit-of-interest>
后裔和C
的祖先。 --merges
选项进一步过滤结果列表以仅显示合并提交。
每个印刷合并的落入以下类别之一:
- 合并带来
<commit-of-interest>
成分支 - 合并带来了不同的分支到已
<commit-of-interest>
- 两个分支父分支已经有
<commit-of-interest>
第一类是你感兴趣的一个。你可以n通常通过查看提交主题行来确定合并的类别。从列表底部开始;最古老的合并最有可能属于第一类。
技术上可以编写一个脚本来过滤掉第二和第三类中的合并(只需测试合并的第一个父代是否可以访问<commit-of-interest>
),但我从未发现它是必需的。
如果您需要做的提交历史更深入的研究那么我建议在看历史图:
git log --oneline --graph --color --decorate \
--ancestry-path <commit-of-interest>..C
您可能希望在--boundary
折腾过,虽然有时候,增加了太多噪声。您可以使用gitk
,但不幸的是,它绘制的图不会以正确的顺序显示父项(gitk
可能会在合并和其左边的第二个父项之间绘制边缘; git log --graph
总是绘制右边的第二个父边)。
不幸的是,我从这里得到的是1500+行,看起来像这样: '| | | * 4b4079b合并请求#1234从用户名/ bug3456' 这不是一个很大的帮助。现在,最后一行是与我正在查找的提交合并,但是它表示何时将此提交合并到另一个分支中(最初引入的分支),但是当它进入C并进行了哪种合并时,它就会进行合并...... – StasM 2012-07-08 00:48:58
@StasM:默认合并提交信息是“合并分支'foo'”(如果将'foo'合并到'master'中)或者“合并分支'foo'到条”(如果将'foo'合并到'bar'中)。如果没有任何/很少的合并提交是这样的话,那么它可能很难 - 你可能需要编写一个脚本来过滤掉我提到的后两类合并。在我的情况下,合并提交几乎总是有默认的格式,所以grep for“into C”,并找到最后一场比赛将找到所有我使用的库的兴趣合并。 – 2012-07-08 04:56:26
太棒了,这帮助我调试了我们在这里的“过早合并”问题。非常感谢! – Stefaan 2013-10-10 10:43:26
- 1. git:合并两个分支并提交提交
- 2. 断线git提交到两个合并分支
- 3. Git当前分支提交列表
- 4. 在提交到当前头之前合并Git状态
- 5. Git合并中间提交的分支
- 6. git将最新的提交合并到主分支
- 7. git将分支合并到分支
- 8. 从提交ID找到git分支或分支
- 9. 合并(git)起源到我当前的本地工作分支
- 10. git合并重新提交提交到另一个提交?
- 11. 显示直接提交到分支的提交,忽略Git中的合并
- 12. Git在合并之前合并提交
- 13. Git:创建一个分支。提交一堆。回到主分支,只想合并某些提交
- 14. 从git中的分支中查找合并提交
- 15. Git合并子分支之前合并到主
- 16. git合并分支 - 不想在远程分支基地之前提交
- 17. Git help:找到一个丢失的分支/丢失提交
- 18. 如何合并一个Git分支到多个版本分支
- 19. Git将一个分支合并到另一个分支是双向合并?
- 20. git分支前几次提交?
- 21. 如何避免git分支被合并到另一个分支?
- 22. 无法当前分支复位到先前的后推提交
- 23. Git - 找出谁合并了一个功能分支到主分支
- 24. 如何找出TFS变更集已合并到哪个分支
- 25. Git - 从以前的提交和拆分提交历史分支
- 26. git显示前几个提交回合并基的提交
- 27. VSTS合并的Git分支孙子到主后子分支已合并到主
- 28. 从clearcase标签合并到git分支
- 29. 阻止git合并到master分支
- 30. git:哪个远程git分支有最后一次提交?
这对git grep X有帮助吗? – 2012-07-07 01:30:43
@MichaelDurrant不知道如何git grep会有所帮助,你可以ebalorate?我无法grep文件/提交中的特定文本,因为我正在寻找的提交进行了大量小的更改,并且几乎所有其他模式也会出现在其他提交中,出现的概率很高。 – StasM 2012-07-07 04:49:03