我如何在我的 Git 存储库中解决合并冲突?
当前回答
这个答案是为那些像我这样的Vim用户添加一个替代方案,他们更喜欢在编辑器内做任何事情。
饰 饰 DR
此分類上一篇
Tpope 帶來了這個偉大的插件為 Vim 稱為 fugitive. 一旦安裝,你可以執行 :Gstatus 檢查有衝突的檔案和 :Gdiff 開啟 Git 在三路合併。
一旦在三路合并,逃生会让你得到你合并的分支中的任何一个变化,如下:
:diffget //2,从原始(HEAD)分支中获取变更: :diffget //3,从合并分支中获取变更:
一旦你完成了合并文件,输入 :Gwrite 在合并的泡沫中。
Vimcasts发布了一个很好的视频,详细解释了这些步骤。
其他回答
查看 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
如果您正在使用 IntelliJ IDEA 作为 IDE,请尝试通过:
git checkout <localbranch>
git merge origin/<remotebranch>
它将显示所有类似的冲突:
A_MBPro:test anu$ git merge 起源/ 自动合并 src/test/java/com/.../TestClass.java CONFLICT (内容): 合并冲突 src/test/java/com/.../TestClass.java
现在请注意,TestClass.java 文件在 IntelliJ IDEA 中显示为红色。
此外,Git 状态也将显示:
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: src/test/java/com/.../TestClass.java
在 IntelliJ IDEA 中打开文件,将有与
<<<<<<< HEAD
public void testMethod() {
}
=======
public void testMethod() { ...
}
>>>>>>> origin/<remotebranch>
在哪里,头部是你的本地分支和起源的变化/<remotebranch>是从远方分支的变化. 在这里保持你需要的东西,并删除你不需要的东西。
git add TestClass.java
git commit -m "commit message"
git push
简单地说,如果你知道其中一个存储库的变化并不重要,并且想解决所有变化,有利于另一个,请使用:
git checkout . --ours
以您的存储库的利益来解决更改,或者
git checkout . --theirs
以解决其他或主要存储库的利益的变更。
或者你将不得不使用一个 GUI 合并工具,一步一步通过文件,说合并工具是 p4merge,或者写下你已经安装的任何一个的名字。
git mergetool -t p4merge
完成文件后,您将不得不保存和关闭,以便下一个将打开。
GitLens for Visual Studio 代码
您可以尝试 GitLens for Visual Studio Code. 关键功能是:
3、轻松解决冲突
我喜欢这个特征:
此分類上一篇
第2章 现在的罪恶
此分類上一篇
第3章 错了
此分類上一篇
4、状态酒吧罪恶
此分類上一篇
有很多功能,你可以在这里查看。
解决冲突的更安全的方式是使用 git-mediate (这里提出的常见解决方案是相当错误的 prone imho)。
查看此帖子,以便快速介绍如何使用它。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别