目前我在分支foo
上,我想合并分支bar
中的更改,由于复杂的原因,git显然认为这是foo
历史的一部分解释。
不幸的是,结果是如果我跑
git checkout foo
git merge bar
虽然我希望进入分支Already up-to-date
的分支bar
中有更改,但我会收到消息foo
。
我考虑了两种可能的解决方案。
一种可能性是简单地结帐bar
,将其复制到其他地方,结帐foo
,然后手动执行合并。这样可行,但如果存在,我宁愿选择手动解决方案。
另一种可能性是进行反向合并,即将foo
合并到bar
中。
不幸的是,当我尝试这个时,git的automerge正好删除了我想保留的bar
中的那些更改,并用foo
中的更改替换它们,这是不可取的。
我如何强制git在将来假装bar
并且foo
已过去,以允许将bar
合并到foo
?
答案 0 :(得分:1)
不是一个聪明的决议但应该有效:
首先,运行
git diff -p foo bar <files_you_want_to_merge> > patch
生成路径文件并在必要时进行编辑(例如删除foo
中比bar
更新的路径文件)。
然后运行
git checkout foo
git apply patch
将'伪合并'bar
改为foo
。