在rebase期间修复没有mergetool的冲突?

时间:2013-04-19 16:07:43

标签: git conflict git-rebase

我在我的分支上做了一个大师级的改变。有二进制文件冲突(我预计会发生冲突),我只想接受分支上的那个。如果这是一个文本文件,我会用mergetool打开文件并接受我的brach上的所有内容但是因为它的二进制文件我当然不能这样做。所以说分支名称是branch1并且在做了一个rebase之后:

 K:\gitrepo\supplemental [(1c58d85...)|REBASE +0 ~0 -0 !1 | +0 ~0 -0 !1]> g s
# Not currently on any branch.
# You are currently rebasing.
#   (fix conflicts and then run "git rebase --continue")
#   (use "git rebase --skip" to skip this patch)
#   (use "git rebase --abort" to check out the original branch)
#
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add <file>..." to mark resolution)
#
#       both modified:      mybinaryfiles/file.bin
#

接受分支上的文件并完成rebase我只是:

git add .
git rebase --continue

为了使问题更加完整,如果我想接受来自master而不是分支的文件,我该怎么办?

尝试理解git在rebase中的合并冲突期间实际执行的操作....它是否确实保持冲突文件的完整性并且只是希望您通过执行git add来确认这是正确的

2 个答案:

答案 0 :(得分:2)

Git merge支持不同的合并策略,包括ourstheirs。 Git rebase允许使用-m选项来使用此合并策略。我建议你在开始游戏前阅读git-mergegit-rebase手册,因为有一些关于它的怪癖。

另见:

  1. How do I select a merge strategy for a git rebase?

  2. How could I use a different strategy for just one commit in a rebase?

答案 1 :(得分:2)

索引中有两个(嗯,所有三个包括基本版本)。您可以检索“#master”&#39;版本或正在重新定位的&#39;分支版本:

git checkout --ours mybinaryfiles/file.bin

git checkout --theirs mybinaryfiles/file.bin

分别

然后只是git add mybinaryfiles/file.bingit commit