我如何在我的 Git 存储库中解决合并冲突?


当前回答

识别哪些文件处于冲突中(Git应该告诉你这一点)。 打开每个文件并检查Difs; Git demarcates它们. 希望它将是显而易见的哪个版本的每个区块保持。 你可能需要讨论它与同开发人员谁承诺的代码. 一旦你解决了冲突在一个文件 git 添加到_file. 一旦你解决了所有冲突,做 git rebase --continue 或 whateve

其他回答

试试:

git mergetool

它打开一个GUI,你通过每个冲突,你得到选择如何合并。有时它需要一些手编辑后,但通常它是足够的本身。


根据Josh Glover的评论:

[此命令] 不必打开 GUI 除非你安装一个. 运行 git mergetool 为我导致 vimdiff 被使用. 您可以安装下列工具之一来使用它: meld, opendiff, kdiff3, tkdiff, xxdiff, tortoisemerge, gvimdiff, diffuse, ecmerge, p4merge, araxis, vimdiff, emerge。


下面是使用vimdiff解决合并冲突的样本程序,基于此链接。

如果你想从分支测试到大师合并,你可以遵循以下步骤:

步骤1:进入分支

git checkout test

步骤2:

git pull --rebase origin master

步骤3:如果有任何冲突,请转到这些文件来修改它。

步骤4:添加这些变化

git add #your_changes_files

步骤5:

git rebase --continue

步骤6:如果仍然存在冲突,再回到步骤3;如果没有冲突,就如下:

git push origin +test

步骤7:然后测试和主人之间没有冲突,你可以直接使用合并。

如果您不使用工具合并,首先复制您的代码:

- `checkout master`
- `git pull` / get new commit
- `git checkout` to your branch
- `git rebase master`

它解决冲突,你可以复制你的代码。

合并冲突发生时,同时对文件进行更改,这里是如何解决。

下面是简单的步骤,当你进入冲突状态时要做什么:

对于实用的教程,请检查: 剧本 5 - 解决混合冲突 由 Katacoda。

差异化

我成功地使用了DifMerge,它可以在Windows、macOS和Linux/Unix上视觉上比较和合并文件。

此分類上一篇

圖片來源:DifMerge(Linux屏幕拍攝)

git mergetool -t diffmerge .

马克思

brew install caskroom/cask/brew-cask
brew cask install diffmerge

而且,你可能(如果没有提供)需要下列额外简单的插槽放置在你的PATH(例如 /usr/bin):

#!/bin/sh
DIFFMERGE_PATH=/Applications/DiffMerge.app
DIFFMERGE_EXE=${DIFFMERGE_PATH}/Contents/MacOS/DiffMerge
exec ${DIFFMERGE_EXE} --nosplash "$@"

-Alt-Up/Down to jump to previous/Next changes. -Alt-Left/Right to accept change from left or right. -Alt-Up/Down to jump to previous/Next changes. -Alt-Left/Right to accept change from left or right

查看 Stack Overflow 问题中的答案 堕胎在 Git 中的合并,特别是 Charles Bailey 的答案,显示如何查看不同版本的文件有问题,例如,

# Common base version of the file.
git show :1:some_file.cpp

# 'Ours' version of the file.
git show :2:some_file.cpp

# 'Theirs' version of the file.
git show :3:some_file.cpp