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

Git rebase - how do I accept remote branch for all merge conflicts?

我正在使用 git 1.7.1 与 my_branch_1 合作,我正在尝试从 master 变基。我在 directory_1 中有一些自己的改变。

当我尝试时:

git rebase master

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

理想情况下,我希望能够说出 git:"hey git - if you hit a merge conflict in directory_2, just take the file from master, don't ask me about fixing it"。

在这一点上,我什至可以接受所有合并冲突的 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 %'

第一个在目录 directory_2 上执行 ours,第二个在目录 directory_2.

上执行 theirs

这个脚本做的是获取所有未解决的冲突,用grep过滤,只有在directory_2的在列表中,然后用xargs来运行 列表中每个文件的命令 git checkout -f <branch: Either HEAD or master> -- <file> && git add <file>