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. 128. Longest Consecutive Sequence

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ...

  2. 有关C,C++,C#, Java的图形图像处理类库 整理(未完待续)

    1.Java相关 1.1 Jzy3D Jzy3D 是一个Java的类库,用来绘制各种各样的三维图形,如下图所示: 下载地址:jzy3d-api,官网 1.2 Proscene 是一个用于创建交互式3D ...

  3. [ Redis ] Redis 未授权访问漏洞被利用,服务器登陆不上

    一.缘由: 突然有一天某台服务器远程登陆不上,试了好几个人的账号都行,顿时慌了,感觉服务器被黑.在终于找到一个还在登陆状态的同事后,经查看/ect/passwd 和/etc/passwd-异常,文件中 ...

  4. Git Step by Step

    原文地址:http://www.cnblogs.com/wilber2013/category/643754.html 1.Git简介 2.Git本地仓库 3.Git对象模型 4.探索.git目录 5 ...

  5. Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键

    在Android系统中用来显示界面的组件(Component)为Activity,也就是说只有重写Activity的onKeyDown方法来监控/拦截/屏蔽系统的返回键(back).菜单键(Menu) ...

  6. 如何利用jQuery进行简单表单验证

    <!DOCTYPE html><html><head><meta charset="utf-8"><meta name=&qu ...

  7. $.extend()和$.fn.extend()用法和区别

    $.extend()和$.fn.extend()用法和区别: 在自己制作插件的时候会经常用到$.extend()和$.fn.extend()两个函数,无论从外观还是作用都非常的类似,但是实际上它们的区 ...

  8. python 最长公共子序列

    网上有很多,但有bug,特别是这个:http://www.oschina.net/code/snippet_16840_2015 好大的坑... get length def lcs_len(a,b) ...

  9. java小程序 实例 二分法查找

    使用二分法在一个数组中查找一个数: package com.test; public class BinaryFind { private final static int size = 500000 ...

  10. Java 线程间通讯(管道流方式)

    一.管道流是JAVA中线程通讯的常用方式之一,基本流程如下: 1)创建管道输出流PipedOutputStream pos和管道输入流PipedInputStream pis 2)将pos和pis匹配 ...