0

我正在我的分支上对 master 进行 rebase。存在冲突的二进制文件(我预计会发生冲突),我只想接受分支上的那个。如果这是一个文本文件,我会用合并工具打开文件并接受我的分支上的所有内容,但由于它的二进制文件我当然不能这样做。所以说分支名称是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
#

要接受分支上的文件并完成变基,我只需:

git add .
git rebase --continue

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

在试图了解 git 在 rebase 中的合并冲突期间实际做了什么......它是否真的保持冲突文件完好无损,只是想让你通过做一个确认这是正确的git add

4

2 回答 2

2

Git 合并支持不同的合并策略,包括ourstheirs. Git rebase 允许通过使用-m选项来使用这种合并策略。我建议在你开始玩之前阅读git-mergegit-rebase手册,因为它有一些怪癖。

也可以看看:

  1. 如何为 git rebase 选择合并策略?

  2. 我怎么能对变基中的一个提交使用不同的策略?

于 2013-04-19T16:11:38.493 回答
2

您在索引中同时拥有这两个(好吧,包括基本版本在内的所有三个)。您可以使用以下命令检索“master”版本或“being-rebased”分支版本:

git checkout --ours mybinaryfiles/file.bin

git checkout --theirs mybinaryfiles/file.bin

分别。

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

于 2013-04-19T16:21:46.857 回答