我必须将两个分支合并到另一个分支,并且我想捕获/记录此历史记录。首先,我尝试了章鱼合并,但是分支太不同了,Git拒绝执行合并。需要明确的是,涉及三个分支,而不是两个。
作为替代方案,我从每个分支中检出了所需的文件,对每组文件进行了三种方式的比较,然后提交。为了记录历史,然后我使用了git replace --graft
。除了不必在没有Git的情况下处理合并(除了跟踪其他分支中的文件……这很重要)之外,一切都很顺利。
然后,我发现该新提交不是分支本身的一部分,而是在需要时代替实际的提交。这是不希望的。诚然,我不知道以这种方式处理事物有任何不利之处,但这并不是说没有负面影响。此外,它看起来很杂乱和不适当。
在查找解决方案时,我发现git filter-branch -- --all
应该可以解决问题……除了似乎没有。首先,我希望至少替换提交的哈希值会发生变化。另外,我遇到的错误似乎表明出了点问题。
Rewrite 500495d563d9209cf21d660e7d78d2a7677e570b (291/318) (6 seconds passed, remaining 0 predicted)
WARNING: Ref 'refs/heads/cleanup
WARNING: Ref 'refs/heads/planning' is unchanged
WARNING: Ref 'refs/heads/devel' is unchanged
WARNING: Ref 'refs/remotes/nm/cleanup
WARNING: Ref 'refs/remotes/nm/planning' is unchanged
WARNING: Ref 'refs/remotes/nm/devel' is unchanged
WARNING: Ref 'refs/replace/3ec2686d2ae2ba9e7583836e26e25c7bd0b8aa19' is unchanged
WARNING: Ref 'refs/tags/sent/18-01-11' is unchanged
WARNING: Ref 'refs/tags/sent/18-02-11' is unchanged
WARNING: Ref 'refs/tags/sent/18-10-23' is unchanged
WARNING: Ref 'refs/tags/sent/18-10-24' is unchanged
WARNING: Ref 'refs/tags/sent/18-12-27' is unchanged
WARNING: Ref 'refs/tags/sent/18-12-31' is unchanged
然后出现的问题是“我还能怎么做”,“实际上有什么地方出错了”和/或“我如何'解决'这个问题?”我了解git graft
是处理第一步的另一种方法,但是(1)这似乎是一些可怕的黑客解决方案,并且我已读过它的建议;(2)我在{{ 1}}使我相信它已被删除,而受到git graft
的支持。
以防万一,在运行git replace --graft
之前,我已经运行过git gc
。实际上,我上周初执行了git filter-branch
部分,只看到今天“水泥”提交是个好主意。