现在程序猿标配GIT作为代码管理,但是从SVN到GIT学习中,其中GIT的冲突是一个难点,常常会导致Push不上去,Pull不下来,很尴尬的地步,还不知道自己写的代码被覆盖没,废话不多说,直接上干货!


亮点

采用SourceTree插件BeyondCompare 可视化解决冲突

方法

构造冲突

  • A 修改了conflict.file 中第1行内容并且提交到git上

  • B 这个时候也修改了confilct.file中第一行内容准备提交,这个时候git就会提示

To git@192.168.x.xxx:xxx/server-aggregator.git
! [rejected] develop -> develop (fetch first)
error: failed to push some refs to 'git@192.168.xx.xx:xxx/server-aggregator.git' hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

提示远程已经有更新了,本地版本太低,让我们先pull拉取最新的代码。

  • 我们pull一下,这个时候由于本地有修改这个文件,就会在本地产生冲突文件

配置外部比较工具

  • 下载Beyond Compare

  • 打开SourceTree->工具->选项->比较->外部差异对比合并->选择BeyondCompare

解决冲突

  • 在本地副本->右键->解决冲突->打开外部合并工具

  • 和svn一样解决好冲突保存更改,退出即可

另外一种情况

  • 拉取时出现如下提示:

it -c diff.mnemonicprefix=false -c core.quotepath=false pull local-server-aggregator develop
/opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell:3: warning: Insecure world writable dir /usr in PATH, mode 040777
From 192.168.0.200:weitoo/server-aggregator
* branch develop -> FETCH_HEAD
Updating b0c5c94..40cef3b
error: Your local changes to the following files would be overwritten by merge:
server/conflict.file
Please, commit your changes or stash them before you can merge.
Aborting

提示需要暂存本地修改,才能拉取服务器上新的代码

  • 点击贮存(英文版:Stash),随便起一个名字,里面存的都是距离上次服务器版本到本地修改之间的差异,千万别删掉了,合并成功无误了再删掉。

  • pull拉取服务器代码,这个时候,本地的代码变成了服务器上的代码。

  • 点击贮藏->应用贮藏区 ,这个时候是把之前的修改合并到本地上,这个时候会提示冲突。

git -c diff.mnemonicprefix=false -c core.quotepath=false stash apply stash@{0}
Auto-merging server/conflict.file
CONFLICT (content): Merge conflict in server/conflict.file

可以在sourcetree里看到有感叹号,代表冲突文件,和上面解决冲突方法类似,但是稍微不同,最左边成了远程版本,中间为远程上一个版本,最后才是本地修改。
这个是和我们操作方式有关:我们是先暂存本地修改,先拉取远程代码,这个时候local 就成了远程代码,最后我们用暂存的合并进去,remote就成了本地修改

多余的.orig文件

这个是由于git自身造成的 它会解决冲突后 生成一个原来冲突的备份,我们可以去掉

git config --global mergetool.keepBackup false

「GIT SourceTree冲突」解决方案的更多相关文章

  1. mac下使用git的冲突的解决方案

    博主之前一直是在windows系统下进行软件代码的开发,window下有很多git的使用工具,如tortoisegit等是个很好的git项目管理工具.而再mac版下的git项目代码管理工具,本人找了好 ...

  2. Git SourceTree 冲突解决方案

    Git现在越来越火,很多人都从Svn迁移到Git上面,Git让我们更加与世界接轨,不再是"局域网"的程序猿,特别是掌握了Git之后,会发现它真的很好用,本文对Git中比较烦人的冲突 ...

  3. git pull冲突的解决方案

    处理步骤: 1.先将本地修改存储起来 $ git stash 这样本地的所有修改就都被暂时存储起来 .使用git stash list可以看到保存的信息: git stash暂存修改 其中stash@ ...

  4. GitHub 系列之「Git速成」

    1.什么是Git? Git 是 Linux 发明者 Linus 开发的一款新时代的版本控制系统,那什么是版本控制系统呢?怎么理解?网上一大堆详细的介绍,但是大多枯燥乏味,对于新手也很难理解,这里我只举 ...

  5. 从0开始学习 GITHUB 系列之「GIT 速成」【转】

    本文转载自:http://stormzhang.com/github/2016/05/30/learn-github-from-zero3/ 版权声明:本文为 stormzhang 原创文章,可以随意 ...

  6. 「BUAA OO Pre」Git生成多个ssh key并连接GitLab仓库

    「BUAA OO Pre」Git生成多个ssh key并连接GitLab仓库 Part 0 前言 写作背景 笔者在配置学校GitLab的ssh key时遇到一些问题,原因应为曾经配置过GitHub的s ...

  7. 「查缺补漏」巩固你的RocketMQ知识体系

    Windows安装部署 下载 地址:[https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.5.2/rocketmq-all-4.5.2-bin- ...

  8. 「编程羽录」上线,程序员必备的这些技能你能get到嘛?

    大家好,我是小羽. 好久不见,给大家带来个好消息,小羽的全新专题「编程羽录」系列正式上新,主要是介绍一些关于面试题和经验总结的文章. 会为大家提供一些技术栈之外,程序员还需要的其他方面硬核知识,做到全 ...

  9. git fetch and git pull &冲突

    1.git fetch和git pull之间的区别 git fetch只会将本地库所关联的远程库的commit id更新至最新,fetch不会改变代码,如果想使代码更新,需要使用git merge o ...

随机推荐

  1. 第13月第16天 ios keywindow

    1. 在弹出层弹出后keywindow已改变 http://www.jianshu.com/p/4695d7efa20b

  2. Mysql锁机制简单了解一下

    历史文章推荐: 可能是最漂亮的Spring事务管理详解 面试中关于Java虚拟机(jvm)的问题看这篇就够了 Java NIO 概览 关于分布式计算的一些概念 一 锁分类(按照锁的粒度分类) Mysq ...

  3. 云计算--hdfs dfs 命令

    在hadoop安装目录下:/hadoop2/hadoop-2.7.3 1.创建目录 bin/hdfs dfs -mkdir /user bin/hdfs dfs -mkdir /user/<us ...

  4. Bug Bounty Reference

    https://github.com/ngalongc/bug-bounty-reference/blob/master/README.md#remote-code-execution Bug Bou ...

  5. Python查找算法之 -- 列表查找和二分查找

    一.列表查找:从列表中查找指定元素 输入:列表.待查找元素 输出:元素下标或未查找到元素 二.列表查找方式 顺序查找 : 从列表的第一个元素开始遍历,知道找到为止.时间复杂度O(n) 二分查找 :从有 ...

  6. JAVA数据库编程(JDBC技术)-入门笔记

    本菜鸟才介入Java,我现在不急着去看那些基本的语法或者一些Java里面的版本的特征或者是一些晋级的知识,因为有一点.Net的OOP编程思想,所以对于Java的这些语法以及什么的在用到的时候在去发现学 ...

  7. @PostContruct注解

    @PostContruct是spring框架的注解,在方法上加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法.

  8. jenkins 使用Git持续构建

    为jenkins添加git插件. 在Available tab页中找到Git Plugin 点击下方的Install without Restart安装插件. 插件安装完毕后,我们需要在jenkins ...

  9. cat集成项目所遇到的一些坑

    第一个问题:(jar包依赖冲突) 启动报错,直接贴log zhengxin-third-shanghai-cis [2017-08-21 14:17:49] 56231 WARN [main] - A ...

  10. dede列表页读取当前栏目名称

    list或者arclist之内使用[field:typename/]之外使用{dede:field name='typename'/}