我如何在我的 Git 存储库中解决合并冲突?
当前回答
这个答案是为那些像我这样的Vim用户添加一个替代方案,他们更喜欢在编辑器内做任何事情。
饰 饰 DR
此分類上一篇
Tpope 帶來了這個偉大的插件為 Vim 稱為 fugitive. 一旦安裝,你可以執行 :Gstatus 檢查有衝突的檔案和 :Gdiff 開啟 Git 在三路合併。
一旦在三路合并,逃生会让你得到你合并的分支中的任何一个变化,如下:
:diffget //2,从原始(HEAD)分支中获取变更: :diffget //3,从合并分支中获取变更:
一旦你完成了合并文件,输入 :Gwrite 在合并的泡沫中。
Vimcasts发布了一个很好的视频,详细解释了这些步骤。
其他回答
如果你想从分支测试到大师合并,你可以遵循以下步骤:
步骤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:然后测试和主人之间没有冲突,你可以直接使用合并。
GitLens for Visual Studio 代码
您可以尝试 GitLens for Visual Studio Code. 关键功能是:
3、轻松解决冲突
我喜欢这个特征:
此分類上一篇
第2章 现在的罪恶
此分類上一篇
第3章 错了
此分類上一篇
4、状态酒吧罪恶
此分類上一篇
有很多功能,你可以在这里查看。
下面是可能的使用案例,从顶部:
你会拖一些变化,但哦,你没有到目前为止:
git fetch origin
git pull origin master
From ssh://gitosis@example.com:22/projectname
* branch master -> FETCH_HEAD
Updating a030c3a..ee25213
error: Entry 'filename.c' not uptodate. Cannot merge.
所以你更新并尝试一次,但有冲突:
git add filename.c
git commit -m "made some wild and crazy changes"
git pull origin master
From ssh://gitosis@example.com:22/projectname
* branch master -> FETCH_HEAD
Auto-merging filename.c
CONFLICT (content): Merge conflict in filename.c
Automatic merge failed; fix conflicts and then commit the result.
所以你决定看看这些变化:
git mergetool
哦,我的,哦,我的,上流改变了一些事情,但只是用我的变化......不......他们的变化......
git checkout --ours filename.c
git checkout --theirs filename.c
git add filename.c
git commit -m "using theirs"
然后,我们试着最后一次。
git pull origin master
From ssh://gitosis@example.com:22/projectname
* branch master -> FETCH_HEAD
Already up-to-date.
是的!
有三个步骤:
查找哪些文件导致冲突的命令 git 状态 查看文件,在其中你会发现冲突标记为 <<<<<<<头 blablabla 将其改为你想要的方式,然后与命令 git 添加解决_conflicts_files git commit -m 混合 msg
查看 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
推荐文章
- VS 2017 Git本地提交数据库。每次提交时锁定错误
- 如何在过去的一些任意提交之间注入一个提交?
- 从GitHub克隆项目后拉git子模块
- GitHub上的分叉和克隆有什么区别?
- 递归地按模式添加文件
- 我如何使用notepad++(或其他)与msysgit?
- 如何将现有的解决方案从Visual Studio 2013添加到GitHub
- Git存储库中的悬垂提交和blob是什么?它们来自哪里?
- 我如何简单地从我最新的git提交创建一个补丁?
- Git显示“警告:永久添加到已知主机列表”
- 我如何检索一个回购的远程git地址?
- 如何列出提交,因为某些提交?
- 如何在不位于存储库的情况下执行Git命令?
- 为什么git在Windows下记不住我的密码
- 我如何得到bash完成工作与别名?