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>
。
我正在使用 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>
。