1 Set up vimdiff

The vimdiff as a merge tool will display several buffers to show the yours/theirs/original changes.

The key point is to set up the vimdiff so that the buffer number in the vimdiff status line is visible.

First, add following code into your ~/.vimrc

set laststatus= "show the status line
set statusline=%-.3n "buffer number

Second, if you know the buffer number, you can use hot key like ",2" (press comma first, then press two as quickly as possible) to pull change from buffer number two.Add below code into your ~/.vimrc to set up hot keys:

map <silent> <leader> :diffget <CR> :diffupdate<CR>
map <silent> <leader> :diffget <CR> :diffupdate<CR>
map <silent> <leader> :diffget <CR> :diffupdate<CR>
map <silent> <leader> :diffget <CR> :diffupdate<CR>

注意: 设置hot key的时候,需要将<leader>替换为你需要设置的前导符号,例如如果设置 ",2" 为获取buffer 2 的内容,那么你需要将 <leader>设置为 ','

即:

map <silent> , :diffget <CR> :diffupdate<CR>
map <silent> , :diffget <CR> :diffupdate<CR>
map <silent> , :diffget <CR> :diffupdate<CR>
map <silent> , :diffget <CR> :diffupdate<CR>

2 Set up git tool

To use vimdiff as default merge tool:

git config --global merge.tool vimdiff
git config --global mergetool.prompt false

3 Resolve merge conflict

Bob and Chen has edited same files. So please merge branch "bob" into "master" at first. Then merge from "chen". The merge conflicts will be created.

git branch         # double check that we got three local branches: master, bob, chen
git checkout master    # set master branch as main branch
git merge bob       #this is ok, because bob is the first one to merge changes
git merge chen       # now some conflicts created because Bob has already edited and merged same files

          Here is the explanation of each buffer:

 
Buffer Explanation Buffer Number
THEIRS contents of the file on the current branch 2
BASE common base for the merge 3
YOURS contents of the file to be merged. 4
MERGED The file containing the conflict markers. You need edit and commit this file. 1

  You could use hot key ",2" (comma + two) ",3" (comma+three) ",4" (comma+four) to pick the content you want to use

   (either THEIRS or BASE or YOURS) to replace the marked conflict in MERGED buffer whose buffer number is one.

  Or you can edit the content directly in MERGED buffer. Anyway, git only care about the the file binding to MERGED buffer.

  Any other buffer will be ignored by git.

  You can use hot key "[c" and "]c" to navigate to previous/next conflict (including the conflict resolved by git automatically) in current file which is binding   to MERGED buffer.

  After finishing editing of the conflicting file in MERGED buffer, you can use hot key ":xa" to exit vimdiff. Git will open next conflicting file with vimdiff   automatically.

  When you have resolved all the conflicts, follow the hint of git to commit your changes.

vimdiff vimmerge 配置及使用的更多相关文章

  1. Git使用指南(1)——Git配置命令

    配置用户信息 git config --global user.name bongxin git config --global user.email bongxin@yeah.net 配置文本编辑器 ...

  2. Linux系统(Centos)下安装nodejs并配置环境

    总结Centos下安装nodejs并配置环境,记录成功安装的方法.推荐的安装方法是利用已编译的二进制文件安装,不推荐使用源码的形式安装,一是源码安装比较麻烦,二是需要自行下载编译浪费时间. 1.安装n ...

  3. git 使用详解(2)——安装+配置+获取帮助

    安装 Git Git 有许多种安装方式,主要分为两种,一种是通过编译源代码来安装:另一种是使用为特定平台预编译好的安装包. 从源代码安装 若是条件允许,从源代码安装有很多好处,至少可以安装最新的版本. ...

  4. git基本操作

    一.在Windows平台上安装Git,可以下载一个msysGit的安装包,点击exe即可安装运行.安装包下载地址:https://git-for-windows.github.io/备注:git命令行 ...

  5. 【使用git】初识git

    0. 版本控制 版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修改情况的系统(vcs). svn等是集中式版本控制,即服务器在单一机器上,每次checkout变化的文件,若机器故障,则有可能 ...

  6. windows上git安装

    Git的官方网站:http://git-scm.com 1.下载:http://msysgit.github.com/ 2.安装 3.配置 用户名.邮箱 这个很重要将来项目提交的账号   $ git ...

  7. git起步

    关于版本控制 什么是版本控制?为什么要版本控制? 版本控制是记录文件内容变化,以便在将来查阅特定版本的系统.有了版本控制,我们就可以将某个文件或是整个项目回退到之前的某个时间段,查看现在和之前相比项目 ...

  8. Ubuntu12.04 GIT安装和使用

    一.安装GIT和配置GIT 1.安装GIT apt-get install git 2.配置GIT ##配置用户信息 git config --global user.name "John ...

  9. 如何在 CentOS7 中安装 Nodejs

    一.安装Nodejs 安装版本:10.13.0 1.安装必要的编译软件包 yum -y install gcc gcc-c++ 2.从源码下载Nodejs cd /usr/local/src wget ...

随机推荐

  1. makefile中的shell语法

    在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙.下面总结了一些. 1:尽在Makefile文件的目标项冒号后的另起一行的代码才是 ...

  2. The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved

    偶在页面里引入了标签如下:     <%@   taglib   prefix="c"   uri="http://java.sun.com/jstl/core&q ...

  3. PLSQL_性能优化系列13_Oracle Index Rebuild索引重建

    2014-10-04 Created By BaoXinjian

  4. C语言中,数组名作为参数传递给函数时,退化为指针

    C语言中,数组名作为参数传递给函数时,退化为指针   C语言中,数组名作为参数传递给函数时,退化为指针:需要数组大小时, 需要一个参数传数组名,另一个传数组大小. 数组名做函数参数时,就相当于指针了. ...

  5. java位运算

    Java的位运算(bitwise operators)直接对整数类型的位进行操作,这些整数类型包括long.int.short.char和 byte,位运算符具体如下表: 运算符 说明 << ...

  6. Android之访问下载文件

    1.SD卡操作类 FileUtils.java package com.example.mars_1500_download; import java.io.File; import java.io. ...

  7. git分支管理和stash

    1 创建分支$ git branch 分支名 2切换到分支$ git checkout 分支名 3查看提交git log --oneline --decorate --graph --all 4 轻量 ...

  8. vim扩展配置

    在用户根目录下新建 “.vimrc”文件,键入一下代码: set syntax=on "高亮语法 set fenc=utf- "设定默认解码 set fencs=utf-,usc- ...

  9. 创建指定日期java Date对象

    import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import ...

  10. 安装jdk java -version 不是自己所需要的版本

    原服务器安装有1.4的jdk,应用需要安装1.6的jdk.安装完毕后在/etc/profile里配置1.6jdk的环境变量后使用命令java -version显示还是原来的1.4的版本. 解决办法: ...