经过一段时间后,我正处于变相的过程中git pull --rebase.我有一些文件有合并冲突.如何接受特定文件的"他们的"更改或"我的"更改?
$ git status
# 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)
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: CorrectlyMergedFile
#
# Unmerged paths:
# (use "git reset HEAD <file>..." to unstage)
# (use …Run Code Online (Sandbox Code Playgroud) 我在 Stack Overflow 和其他地方找到了许多使用 OURS/THEIRS 动态解决冲突的说明,以防您只想用另一个文件(特别是二进制文件)覆盖一个文件。然而,在我发现的几乎每个例子中,它总是被整体应用于所有冲突,而我只想将它应用于单个冲突文件。
我发现的一种假设解决方案是使用 git mergetool 命令。然而,合并工具给我带来了问题,我选择了“选择左边”或“选择右边”,但没有任何反应。
不管mergetool如何,我还是想知道是否有办法从命令行执行此操作。我确定有,如果有人让我知道命令,或者以其他方式将我链接到我一定找不到的 SO 问题,我将不胜感激。
我也试过用...
git checkout --theirs PATH/TO/CONFLICTED/FILE
但是当我输入 'git status' 时,它仍然显示文件冲突。
非常感谢您的参与。
我在Visual Studio中使用Git,突然在所有文件上出现了这种冲突 
我可以点击每一个冲突并选择Take Source,但由于有534个冲突,我宁愿在命令行上进行批量解析.解决所有这些冲突的适当命令是什么?
这是我的情况:git merge master导致 50 个文件存在合并冲突。我希望其中 45 个文件被接受master并完成,并且我想手动解决其余 5 个文件中的冲突。所有 45 个文件都在目录 中some/dir。其余5人分散在其他地方。如果我只想接受 master 对所有 50 个冲突的更改,我会运行以下命令:
git merge -X theirs master
# OR (same thing):
git merge --strategy-option theirs master
Run Code Online (Sandbox Code Playgroud)
但我不想那样,就像我说的。我想要更多这样的东西:
git merge -X theirs master some/dir
Run Code Online (Sandbox Code Playgroud)
这样它会自动为 中的所有冲突选择“他们的”(主人)一方some/dir,但否则让我手动修复冲突。然而,这并不存在。
所以,我的解决方法是这样的:
简短的介绍:
开始合并,在众多冲突文件中手动修复我需要的几个文件。备份我刚刚修复的所有文件。中止合并。重做合并,git merge -X theirs master以自动接受master所有文件中所有冲突的更改。手动将我的几个手动修复的文件复制回存储库,然后提交它们。
这样可以避免手动修复 50 个文件,而当只有 5 个文件真正需要我注意时,这可能会非常乏味且耗时。
完整、详细的步骤:
开始正常合并:
git merge master
Run Code Online (Sandbox Code Playgroud)
手动解决我想要执行此操作的 5 个文件中的冲突,并保存每个文件。然后,将它们复制到存储库之外的位置(或者至少在存储库忽略的文件夹中)。我现在拥有手动解决的 5 个文件的副本。这是实现此目的的一种方法:
mkdir -p …Run Code Online (Sandbox Code Playgroud)我将两个分支合并在一起,让我们说branchA和branchB。他们有大约100个有冲突的文件。
branchB可以接受所有工作,并且100%是我所需要的。我不想强制推送branchB或任何东西。
有没有一种方法可以合并这两个文件,只是说有任何冲突就可以接受branchB上的内容,所以我不必打开每个文件或“他们的文件”或“我们的文件”。
正在尝试从branchB进行递归合并,并使用-s和-x选项将branchA拉出,但这似乎没有按预期工作
谢谢