我在我的分支上做了一个大师级的改变。有二进制文件冲突(我预计会发生冲突),我只想接受分支上的那个。如果这是一个文本文件,我会用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
来确认这是正确的
答案 0 :(得分:2)
Git merge支持不同的合并策略,包括ours
和theirs
。 Git rebase允许使用-m
选项来使用此合并策略。我建议你在开始游戏前阅读git-merge
和git-rebase
手册,因为有一些关于它的怪癖。
另见:
答案 1 :(得分:2)
索引中有两个(嗯,所有三个包括基本版本)。您可以检索“#master”&#39;版本或正在重新定位的&#39;分支版本:
git checkout --ours mybinaryfiles/file.bin
和
git checkout --theirs mybinaryfiles/file.bin
分别
然后只是git add mybinaryfiles/file.bin
和git commit
。