1、可以在任意目录使用 git mergetool --tool-help    查看 git 所支持的merge tools。

2、可以使用如下配置去设置merge tool 和 diff tool:

git config --global --add merge.tool kdiff3
git config --global --add mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
git config --global --add mergetool.kdiff3.trustExitCode false git config --global --add diff.guitool kdiff3
git config --global --add difftool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
git config --global --add difftool.kdiff3.trustExitCode false # git config --global --add diff.tool kdiff3 #一般不将默认的diff tool设为gui的tool

git difftoolgit mergetool 命令的说明:

-g
--[no-]gui

When git-difftool is invoked with the -g or --gui option the default diff tool will be read from the configured diff.guitool variable instead of diff.tool. The --no-gui option can be used to override this setting.

简单的说就是有-g选项则使用 diff.guitool 设置的tool来作为diff tool。这个参数只对 git difftool 命令有效。

--[no-]trust-exit-code

git-difftool invokes a diff tool individually on each file. Errors reported by the diff tool are ignored by default. Use --trust-exit-code to make git-difftool exit when an invoked diff tool returns a non-zero exit code.

git-difftool will forward the exit code of the invoked tool when --trust-exit-code is used.

也就是说git-difftool对每个文件分别调用一个 diff tool,每个diff tool的运行错误默认都是被忽略的。 使用 --trust-exit-code 可以在某个 diff tool 运行后返回非0时使 git-difftool 退出。

如果使用了 --trust-exit-code,则git-difftool会将返回码往下传递。

3、当冲突发生时,你可以简单的使用 git mergetool 来解决冲突。具体演示如下:

a、你修改了某些文件,且没有提交到本地库,这时你向pull服务器的版本,你大概是这样做的:

$ 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.

b、上面的错误提示你有一个文件未能更新,因为它未提交新的更改,因此不能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.

c、当你提交更改之后再pull,则git会自动对更改的文件进行merge,但上面提示merge发生冲突,接下来你应该这样来查看有哪些地方发生了冲突:

$ git mergetool

但是这一步还有例外,也许你并不想合并冲突,因为你有足够的信心直接采用文件的某个版本,这时你可以这样:

$ git checkout --ours filename.c
$ git checkout --theirs filename.c
$ git add filename.c
$ git commit -m "using theirs"

d、最后结束merge:

$ git pull origin master
$ git push master From ssh://gitosis@example.com:22/projectname
* branch master -> FETCH_HEAD
Already up-to-date.

冲突合并到此结束。

对于svn的合并,若出现错误,则其目录里将会有一些merge文件,这时候你可以直接再冲突的目录使用如下命令来合并冲突:

$ meld .

svn 出现冲突时可以使用 meld . 命令合并。 而git的冲突合并详见内容的更多相关文章

  1. 多人开发时Git下冲突的产生和解决

    冲突的产生 很多命令都可能出现冲突,但从根本上来讲,都是merge 和 patch(应用补丁)时产生冲突. 而rebase就是重新设置基准,然后应用补丁的过程,所以也会冲突. git pull会自动m ...

  2. 17.分支的合并&遇到冲突时的分支合并

    分支的合并 假设你已经修正了 #53 问题,并且打算将你的工作合并入 master 分支. 为此,你需要合并 iss53 分支到 master 分支,这和之前你合并 hotfix 分支所做的工作差不多 ...

  3. SVN提交项目时版本冲突解决方案

    版本冲突原因: 假设A.B两个用户都在版本号为7的时候,更新了index.jsp这个文件,A用户在修改完成之后提交index.jsp到服务器,这个时候提交成功,这个时候index.jsp文件的版本号已 ...

  4. Git for Windows之分支管理、分支合并、解决分支冲突

    分支是在稳定版本出现bug的情况下,通过分支技术,在保证稳定版本稳定的情况,修改稳定版本的(差异下载的,速度极快,不同于SVN等技术,会将所有的代码下载到本地)副本,通过合并,解决冲突,最后回归到稳定 ...

  5. git分支的合并和冲突解决【转】

    本文转载自:http://blog.csdn.net/Kingson_Wu/article/details/39227611 http://gitbook.liuhui998.com/3_3.html ...

  6. Git合并分支出现的冲突解决

    人生不如意之事十有八九,合并分支往往也不是一帆风顺的. 我们准备新的分支newbranch. LV@LV-PC MINGW32 /c/gitskill (master)$ git checkout - ...

  7. Git -- 分支与合并 (命令行+可视化工具p4merge)

    基本命令 把所有的变化都放在master分支并不是最好的做法. 建议的做法是把变化放在分支里面. 至少应该准备一个feature分支之类的, 把变化都隔离开来, 然后等到所有的功能都稳定之后再合并到m ...

  8. git 出现冲突时的解决办法

    <一> 二者兼得最麻烦 1, 出现冲突一般出现在群体开发两个及以上开发者同时修改同一个文件时 2, 具体表现为 git pull , git push 和 git commit 命令执行失 ...

  9. git文件冲突合并的报错:Your local changes to the following files would be overwritten by merge

    记录一下在项目里使用git遇到代码冲突时的解决方法 问题:当我和我同事两个人改了相同的一个文件,他在我提交前提交了,这时候我就提交不了了,并且也pull不下来他的代码 会报错: Your local ...

随机推荐

  1. SecureCRT发送键盘按键对应表(转义字符)

    \r 发送回车(CR) \n 发送换行符(LF) \b 发送退格 \e 发送一个转义 \t 发送一个标签 \\ 发送一个反斜杠字符 \v 将剪贴板的内容粘贴到活动状态会话窗口 \p 暂停一秒钟

  2. Jsp2.0自定义标签(第三天)——EL表达式的使用

    1.提出问题: 我们经常会看到这样的jsp页面代码: 浏览器显示: 为什么会在页面输出:Hello World  ,${per}究竟是如何找到“Hello World”的呢? 2.分析问题: 要想解决 ...

  3. Rebound动画框架简单介绍

    Rebound动画框架简单介绍 Android菜鸟一枚,有不对的地方希望大家指出,谢谢. 最近在接手了一个老项目,发现里面动画框架用的是facebook中的Rebound框架,由于以前没听说过,放假时 ...

  4. 使用LeakCanary遇到的问题 就是不弹出来

    今天楼主遇到引用LeakCanary时代码跟官网一样但是就不弹出来.楼主新建项目就可以正常使用.楼主郁闷半天,现在终于整出来了. 楼主主工程app引用module为thirdParty,本想为了整洁三 ...

  5. jmeter3.x的jtx文件解析

    jtl保存测试结果 打开jtl文件,内容为下: timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,suc ...

  6. 网上常用免费webservice_查询(网络复制)

    MP3在线搜索服务 地址:http://www.wopos.com/webservice/song.asmx 介绍: 使用: getMusicList()方法搜索MP3/WMA等音乐文件 多功能条形码 ...

  7. eclipse离线安装插件过程

    离线安装插件: 1. help -> install New Softe.. 2. 打开安装插件界面 最后点击,next, 同意事项,重启eclipse.

  8. dockerfile VOLUME 对外暴露目录设置问题

    最近遇到一个特殊问题, 容器对外映射挂载目录 , 发现容器中的目录并没有映射到宿主机上. 后经排查是是镜像中没有指定 volume # 例如 FROM debian:wheezy VOLUME /da ...

  9. Android开发有用的三方网站

    聚合数据-免费数据调用 https://www.juhe.cn/ 有赞- 免费的微商城 http://youzan.com/ 秀米微信图文编辑器 http://xiumi.us/ 禅道项目管理软件 h ...

  10. ORACLE数据库导表

    今天在公司的server上面装一个系统,在数据库导表的时候一直导不进去,原先是10g的.dmp文件,导入11g.怀疑版本号不兼容,后来把.dmp表打开,把里面的版本号号改为11g,发现导入还是不行.i ...