我正在尝试清理大量的主题分支,主要是因为mastergithub 中的分支概述不再在非活动主题分支中显示虚假的"n ahead"指示符,因为存在相同的更改.
如果没有这些虚假指标,这个概述页面将提供一种很好的方式来一目了然地看到来自旧主题分支的任何提交是否被无意中遗漏而未被合并回来master.
在下面的图中,Y是在分支提交topic,后来施加到master作为Y'(因此它们具有不同的SHA1哈希,但相同的补丁ID).
A --- B --- C --- Y' --- E <-- master
\
X --- Y <-- topic
Run Code Online (Sandbox Code Playgroud)
git cherry master topic 适当报告:
- Y
Run Code Online (Sandbox Code Playgroud)
但是,如果我试图通过发出清理它git merge topic的master,我收到了合并冲突,因为变化E在master此后改变其对应用补丁的上下文.
有没有办法告诉master"嘿,你真的已经Y有了,所以你可以停止报告你没有."?(能够以自动/编程方式应用的方式执行此操作是关键.)
我不知道为什么我之前没有想到这一点,但只要相同的变更列表是master和之间的唯一区别topic,git merge -s ours topicfrommaster就可以轻松解决问题。显然,合并将在没有冲突的情况下应用,并且合并的存在将消除虚假的未合并指示符。
我的 github 分支概述页面现在没有误导性的“n advance”指示器,因此真正的未合并提交将清晰可见。