Git rebase-如何接受所有合并冲突的远程分支?

Git rebase-如何接受所有合并冲突的远程分支?,git,git-rebase,Git,Git Rebase,我正在使用Git1.7.1与我的_分支_1一起工作,我正在尝试从master重新设置基址。我在目录_1中有自己的一些更改 当我尝试: git rebase master 从我的分支中,我从目录2中的文件中获得大量合并冲突(超过200个)。我不知道这些冲突是怎么发生的。我也不知道应该如何纠正这些冲突,因为它们都在我从未打开过的文件中,我对这些文件一无所知 理想情况下,我希望能够告诉git:“嘿,git,如果你在目录2中遇到了合并冲突,就从master那里获取文件,不要问我如何修复它” 在这一点上

我正在使用Git1.7.1与我的_分支_1一起工作,我正在尝试从master重新设置基址。我在目录_1中有自己的一些更改

当我尝试:

git rebase master
从我的分支中,我从目录2中的文件中获得大量合并冲突(超过200个)。我不知道这些冲突是怎么发生的。我也不知道应该如何纠正这些冲突,因为它们都在我从未打开过的文件中,我对这些文件一无所知

理想情况下,我希望能够告诉git:“嘿,git,如果你在目录2中遇到了合并冲突,就从master那里获取文件,不要问我如何修复它”


在这一点上,我甚至可以接受所有合并冲突的master,因为我的大部分工作都是处理新文件。我如何自动告诉git使用master中的文件重新设置基础并解决所有冲突?

您可以做的是执行git merge master。这将生成合并冲突。然后,您可以使用一个小小的shell魔术来使用
git diff--name only--diff filter=U
完成其余的工作。此命令将列出所有存在冲突的文件。所以你可以做一些像

$ git merge master
$ git diff --name-only --diff-filter=U | grep ^path/to/directory_2 | xargs -I% sh -c 'git checkout -f HEAD -- % && git add %'
然后你就可以完成合并了

或者你可以用另一种方式

$ git diff --name-only --diff-filter=U | grep ^path/to/directory_2 | xargs -I sh -c 'git checkout -f master -- % && git add %'
第一个在目录
目录2
上执行
我们的
,第二个在目录
目录2
上执行
他们的


此脚本所做的是获取所有未解决的冲突,使用
grep
进行过滤,以便只有
目录_2
中的冲突才在列表中,然后使用
xargs
为列表中的每个文件运行命令
git checkout-f--&git add

Kdiff3是一个非常方便的工具。支持选择性但不超过手动操作的目录合并。但是,如果您不知道,为什么不在重新基准之前合并呢?这基本上解决了问题。在合并和添加选定的文件后,我仍然有一些重设基准的错误。这些问题是通过从master签出受影响的文件,然后运行git-rebase--skip来解决的。如果我在Mac OS X上运行第二个命令,我会得到
xargs:invalize选项--c
。如何防止此错误?如果我运行第一个命令,我会发现
致命:pathspec“%”与任何文件都不匹配
。第二个命令似乎缺少
-I%
,我只是在运行第一个命令时忘了删除grep lol。