git rebase。在我宁愿掌握的领域中,有太多的冲突

时间:2015-10-20 01:05:00

标签: git rebase

我的分支(B)继承自Master(M)。由于时间已经过去,M和B已经发散,但是B仅修改树中的独占文件夹(f)。

目标是保持B与M同步。我理解它需要解决文件夹(f)中的冲突,但是有一种方法可以简化这一点,以便对于非f的所有内容,在重新定位时始终使用master ?

我正在试图解决我绝对没有修改过的文件夹的冲突,并且想要吸收M的内容。

提示?

1 个答案:

答案 0 :(得分:0)

对于不在目录(文件夹)-s theirs中的文件,您想要的是f。不幸的是,git首先没有-s theirs,更不用说限制为f了。

然而,一切都没有丢失,并且通过一些工作(例如shell脚本),您可以自动执行大部分操作,因为git git checkout

在重新定位时(即,挑选提交将其复制到新基础),每当git因冲突而停止时,您只需git checkout <rev> -- <path>就任何有冲突的<path>。选择与其文件版本相对应的<rev>(由于rebase反转透视的方式,只是HEAD版本;或者您可以使用:2:<path>尽管我没有&# 39;我自己试过这个)。这相当于使用-s theirs(如果存在),因为它使用相关文件的版本填充索引条目。这意味着您甚至不必git add结果:它只是解决冲突。

当然,请确保不要将其应用于目录<path>中的任何f。根据需要手动解决。

完成后,恢复rebase并让git完成其工作,直到你遇到下一次挑选冲突。