GIT 合并时,顺利的话皆大欢喜,如果碰到冲突真是件痛苦的事。本文本描述怎样利用vimdiff这一强大的工具解决冲突。

配置git 的merge工具

git 配置文件为~/.gitconfig

执行以下命令:

git config --global merge.tool vimdiff
git config --global merge.conflictstyle diff3
git config --global mergetool.prompt false#让git mergetool不再生成备份文件(*.orig)
git config --global mergetool.keepBackup false

解决冲突

git mergetool filename

文件名参数是可选的。如果不传文件名,那么将会自动挨个打开有冲突的文件。界面如下:

上一层三个小窗口分别对应:

  • LOCAL buffer: 当前分支
  • BASE buffer: 两个分支共同祖先,代表两个分支修改前
  • REMOTE buffer: 需要合并到当前分支的分支

下层窗口为:

  • MERGED buffer: 合并后的,即有冲突的

vimdiff使用

鼠标移动到MERGED窗口(CTRL-w切换窗口),

:diffget REMOTE # 获取REMOTE的修改到MERGED文件, 忽略大小写
:diffg BASE # get from base
:diffg LOCAL # get from local

注意:通过diffget只能选取local, base, remote三种的一种,要想都需要3种或者两种,只能通过修改MERGED文件

修改完成后, 保存

:wqa

突解决完,commit

git commit

删除orig文件

find . -name "*.orig" | xargs rm

vimff命令参考:

]c      # nect difference
[c      # previous difference
zo      # open folded text
zc      # close folded text
zr      # open all folds
zm      # close all folds
:diffupdate     # re-scan the file for difference
do      # diff obtain
dp      # diff put
:set diffopt+=iwhite    # to avoid whitespace comparison
Ctrl+W+W                # toggle between the diff columns
Ctrl+W+h/j/k/l          # 移动鼠标到不同窗口
:set wrap               # wrap line
:set nowrap
:syn off                # remove colors

vimdiff解决git merge冲突相关推荐

  1. 【git系列004】解决 git 未指定冲突处理方法的问题

    解决 git 未指定冲突处理方法的问题 hint: Pulling without specifying how to reconcile divergent branches ishint: di_ ...

  2. VS Code 1.69 发布:允许快速解决 Git 合并冲突

    Visual Studio Code 1.69 现已发布,一些主要亮点更新包括: 3-way merge editor- 在 VS Code 内解决合并冲突. 合并编辑器允许你快速解决 Git 合并冲 ...

  3. Git stash及解决Git stash冲突问题

    Git stash 适应场景: 使用git的时候,我们往往使用分支(branch)解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的 ...

  4. 如何解决git代码冲突

    如何解决git代码冲突 1.解决冲突,删除代码中矛盾的代码,然后上传或者下拉 git pull 或 git push 时出现MERGING,说明代码合并冲突 打开冲突文件解决代码冲突时,尽量把所有不同 ...

  5. 配置Beyond Compare 4作为git mergetool来解决git merge命令导致的文件冲突

    文章目录 前言 解决方案 前提 配置 Beyond Compare 文件冲突及处理 产生冲突 解决冲突 工具配置的参数含义 git config git mergetool 思考 总结 前言 使用 g ...

  6. git merge 冲突解决

    git merge 不同分支合并时,同一文件名的内容不同产生冲突 同一项目有三个分支,将second分支合并到first分支上 first分支的hello.txt文件内容 second分支的hello ...

  7. 解决GERRIT MERGE冲突“GIT SUBMIT INCLUDING PARENTS”

    一.问题场景 gerrit merge冲突"git submit including parents"根本原因commit相互依赖提交.是用户push了commit A,在comm ...

  8. git merge 冲突_更新了!深入浅出图解Git,入门到精通(保姆级教程)第三篇

    原文链接:https://mp.weixin.qq.com/s/d7YwRi1mEkxUSUqxWD_B1Q 这一篇写完基本Git的操作就图解完了,如果想深入了解Git,这里可以推荐一些Git的硬核书 ...

  9. git merge 冲突_卧槽!小姐姐用动画图解 Git 命令,这也太秀了吧?!

    公众号关注 "GitHubDaily" 设为 "星标",每天带你逛 GitHub! 大家好,我是小 G. 在座的各位应该都知道,Git 作为居家必备.团队协作之 ...

最新文章

  1. Python的垃圾回收机制(引用计数+标记清除+分代回收)
  2. c编写程序完成m名旅客和n辆汽车的同步程序代写
  3. 外币评估时,错误勾选”资产负债表准备评估”的处理
  4. 由若干计算机网络连接而成的网络,计算机网络复习大纲(中山大学)
  5. Java类加载器总结
  6. 阿里云喻义:十年牧码,从码农走向工程师的进化之路
  7. [Shell]Tetris Game
  8. 【转】linux下cpio命令使用
  9. 江西直播源PHP代理,直播源更新平台
  10. Unity 工具之 UniWebView 内嵌网页/浏览器到应用中,并且根据UGUI大小放置(简单适配UGUI)
  11. Delphi编程(二)__Delphi安装
  12. 1到20阶乘倒数之和
  13. eclipse导入静态网页模板+搭建springboot环境示例+细节问题解决(详细)
  14. layui中关于重置按钮不起作用的提醒
  15. Excel-每隔几行进行转置一次
  16. 微信内网页链接被多人投诉导致拦截的解决方案
  17. 传统手工特征方法整理--LBP,HAAR,SIFT,HOG,ORB,SURF
  18. Hue编译安装适配sparksql(hue+livy+sparksql+pyspark)
  19. 《Applied Energy》期刊介绍(SCI 1区)
  20. Mentor.Graphics.O-in v3.0 Linux 1DVD

热门文章

  1. 三星刷入鸿蒙OS,全面狙击华为鸿蒙OS系统!谷歌霸气联手三星:发布新版鸿蒙OS系统...
  2. AES与RSA混合加密完整实例
  3. PUBG绿色玩家 看过来!
  4. 2021-06-10 MYSQL存储过程与触发器作业
  5. java使用jacob操作word文档
  6. android技术帖,android好帖子
  7. python3+selenium框架设计04-封装测试基类
  8. RandomAccess
  9. 21款奔驰S400L升级原厂小柏林之声音响
  10. word 编辑过程中变为只读_WPS?教程 | WPS?云办公如何多人协同编辑