0

目前我在 branch foo,我想合并来自 branch 的更改bar,git 显然认为这是foo历史的一部分,原因很难解释。

不幸的是,结果是如果我跑

git checkout foo
git merge bar

尽管我想进入分支Already up-to-date的分支发生了变化,但我会收到消息。barfoo

我考虑了两种可能的解决方案。

一种可能性是简单地 checkout bar,将其复制到其他地方, checkout foo,然后手动执行合并。这将起作用,但如果存在这种情况,我希望使用较少手动的解决方案。

另一种可能是做反向合并,即改为merge foointo bar。不幸的是,当我尝试这样做时,git 的 automerge 会完全删除那些bar我想要保留的更改并用 from 的更改替换它们foo,这是不可取的。

我如何强制 git 假装bar在未来和foo过去,以允许合并barinto foo

4

1 回答 1

1

不是一个聪明的解决方案,但应该可以:

第一次运行

git diff -p foo bar <files_you_want_to_merge> > patch

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

然后运行

git checkout foo
git apply patch

将“伪合并”barfoo.

于 2013-06-04T07:07:24.807 回答