强制合并在git的分支中

时间:2013-06-04 06:43:52

标签: git git-merge

目前我在分支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

1 个答案:

答案 0 :(得分:1)

不是一个聪明的决议但应该有效:

首先,运行

git diff -p foo bar <files_you_want_to_merge> > patch

生成路径文件并在必要时进行编辑(例如删除foo中比bar更新的路径文件)。

然后运行

git checkout foo
git apply patch

将'伪合并'bar改为foo