exe*_*163 101 git conflict resolve merge-conflict-resolution
有没有解决使用结账所有文件冲突的方式--ours
和--theirs
?我知道您可以为单个文件执行此操作,但无法找到为所有文件执行此操作的方法.
Dmi*_*tri 83
只需grep通过工作目录并通过xargs命令发送输出:
grep -lr '<<<<<<<' . | xargs git checkout --ours
Run Code Online (Sandbox Code Playgroud)
要么
grep -lr '<<<<<<<' . | xargs git checkout --theirs
Run Code Online (Sandbox Code Playgroud)
如何工作:grep
将搜索当前目录(.
)和子目录中的每个文件递归(-r
标志)寻找冲突标记(字符串'<<<<<<<')
在-l
或--files-with-matches
标志使grep的输出只有在string中找到的文件名.首次匹配后扫描停止,因此每个匹配的文件仅输出一次.
匹配的文件名然后通过管道输出到xargs,这是一个实用程序,它将管道输入流分解为git checkout --ours
或的单个参数--theirs
更多在这个链接.
由于每次在命令行输入都非常不方便,如果你发现自己经常使用它,为你选择的shell 创建一个别名可能不是一个坏主意:Bash是通常的一个.
这种方法至少应该通过Git版本2.4.x
Tha*_*ish 47
你可以-Xours
或-Xtheirs
用git merge
为好.所以:
git reset --hard HEAD
)git merge -Xours
或git merge -Xtheirs
)免责声明:当然,你可以只选择一个选项,或者-Xours
还是-Xtheirs
,不要使用不同的策略,你当然应该由文件去文件.
我不知道是否有办法checkout
,但我不认为它非常有用:如果你想为不同的文件使用不同的解决方案,选择checkout命令的策略是有用的,否则只需要采用合并策略方法.
Cor*_*sky 33
git checkout --[ours/theirs] .
只要你处于所有冲突的根源,你就会做你想做的事.我们的/他们只影响未合并的文件,所以你不应该特别grep/find/etc冲突.
Pet*_*ter 24
git diff --name-only --diff-filter=U | xargs git checkout --theirs
Run Code Online (Sandbox Code Playgroud)
似乎做了这个工作.请注意,您必须cd'ed到git repo的根目录才能实现此目的.
Mat*_*wne 14
场景一
如果其他人希望用另一个分支的内容简单地覆盖一个分支(例如 master)中的所有内容,则有一种更简单的方法:
git merge origin/master --strategy=ours
Run Code Online (Sandbox Code Playgroud)
场景二
相反,请参阅是否有“他们的”版本的“git merge -s ours”?
更新
对于场景 2,链接的答案建议使用:
git checkout branchA
git merge -X theirs branchB
Run Code Online (Sandbox Code Playgroud)
我发现这并不完全相反,--strategy=ours
您可能仍然会遇到合并冲突(在某些情况下,您实际上想要删除的其他分支中的代码会被保留)。因此,如果您想要一个真正与 相反的解决方案git merge other-branch --strategy=ours
,最好的方法是分两步完成(两次合并)。假设你的目标是取代branch-a
与内容branch-b
。那么第一步就是这样做:
git checkout branch-b
git fetch branch-a
git merge branch-a --strategy=ours
Run Code Online (Sandbox Code Playgroud)
现在 branch-b 已准备好合并到 branch-a 中而不会发生冲突。此时,如果您使用的是 Github 之类的东西,您可以提出一个 PR 将分支 b 合并到分支 a。或者,如果不需要同行评审,您可以直接进行合并:
git checkout branch-a
git merge branch-b
# Cleanup - delete branch-b (if desired)
git branch -d branch-b
git push origin --delete branch-b
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
112360 次 |
最近记录: |