对于GIT,不知道有没有人和我一样,很长时间都是小心翼翼、紧张兮兮,生怕一不小心,自己辛苦写的代码没了。

特别是代码冲突,更是难到我无法理解,每次都要求助于百度,跟着人家的教程一步步解决,下一次还是这样。

所有的紧张、不自信、不敢用、用不好,都来源于:不理解

只要理解了,你会发现所有问题一下子没了,所有焦虑一下子释然,你变的自信而坚定。

接下来说一下我对GIT代码冲突的理解,希望能帮助到你。

GIT的代码冲突主要存在于两个地方:

(1)本地仓库和远程仓库之间

场景一般是:你从远程仓库拉取了代码开始开发,在这期间,有同事提交了代码,等你提交时,报错不让你提交了。

(2)本地的分支之间

场景一般是:你从master分支拉出了develop分支,在develop分支上开发,在这期间,各种原因,master分支发生了变化。等你想把develop分支合并到master分支,提示代码冲突。

其实,本质都是一样的,我们用一个简单的模型来解释,为什么会出现代码冲突。

(1)没有冲突的场景:

我们把A仓库(分支)的代码拉取到B仓库(分支),一顿开发后,向A提交。

这么做一点问题都没有,既然你是在我之上修改的船新版本,很好,一切以你为准,没问题。

(2)冲突来了:

我们把A仓库(分支)的代码拉取到B仓库(分支),在我们开发的过程中,A发生了变化(不管什么原因),开发完成后我们再向A提交。

不用说GIT,我们自己都会觉得这事儿有问题。

我们俩都是在老代码之上修改的船新版本,那么以谁为准啊?咱俩改的不是一个地方还好说,如果改的是同一个地方,那么GIT根本没法自己判断选择哪一个。

这就是GIT的代码冲突,一句话:你跑了一趟回来(开发完成回来提交),它已经变了(相比当初拉取代码时,发生了变化)。

那么,GIT是怎么处理代码冲突的呢?有两种方式:

第一种方式:B仍然向A提交代码,A进行代码合并、处理冲突后,B再把A的代码拉过来,A和B都是最新版本了。

我们分别看一下采用这种方式,两种冲突场景各自是怎么处理的。

(1)远程仓库和本地仓库的冲突

在这种场景下,可以这么做吗?

显然,不行。因为远程仓库那边,没有人会给你处理冲突。所以远程仓库对于这种方式,是直接拒绝的,只能采用第二种了。

(2)本地分支之间的冲突

远程仓库不允许,本地分支却可以,因为都是在我们本地,程序员可以处理冲突。

一般对于本地分支的冲突,我们也是这么做的。master分支把develop分支merge过来,处理完冲突后,develop分支再把master分支merge回来,这样俩分支都是最新版本了。当然如果develop分支不需要了,你直接删了也可以。

第二种方式:B先拉取A的代码,在本地处理冲突后,再把代码提交给A,这样A和B都是最新版本了。

我们再来看一下采用这种方式,两种冲突场景各自是怎么处理的。

(1)远程仓库和本地仓库的冲突

对于本地和远程仓库的冲突,我们一般就是这么做的。

从逻辑上讲,既然你不敢接受我的推送,是因为我不是在你的基础上修改的。那好,我提交前先拉取你的代码,主动和你拉齐,现在你的代码我都有,我就是在你的基础上修改的了,你现在可以放心的接受我的推送了吧。

(2)本地分支之间的冲突

对于分支,我们也可以按照这个思路。先在develop上执行merge master,处理完冲突后,再切换到master,执行merge develop。这样,同样俩分支都成了最新版本。是不是发现比第一种方式更简单?

最后总结一下:

1、本地仓库和远程仓库的冲突:

(1)git pull。没有冲突最好,有冲突处理冲突。

(2)git add -A

(3)git commit -m

(4)git push

后三步和平时提交代码一个样。所以,提交代码前先pull,是一个很有必要的好习惯。

2、本地master分支和develop分支的冲突:

(1)git switch develop。切换到develop分支。

(1)git merge master。把master分支合并过来,没有冲突最好,有冲突处理冲突。

(2)git switch master。切换回master分支。

(3)git merge develop。把develop分支合并过来。

一文理解GIT的代码冲突的更多相关文章

  1. git解决代码冲突

    1.当项目开发是几个人的时候,难免会出现代码冲突,使用git命令行解决冲突的方法如下: git checkout develop git pullgit checkout feature/新建会员功能 ...

  2. 怎样解决git提交代码冲突

    当我们使用git提交代码时,别人可能也同一时候改动了我们改动的文件,可是别人的先合入到配置库里边,这样当我们的提交要合入时.就会产生冲突,能够使用下面步骤来解决冲突: (1) git rebase   ...

  3. git pull代码冲突。怪异问题,了解一下

    当远程仓库代码与本地代码产生冲突,无法 pull,且决定放弃本地代码的时候. 或者, 碰见我这种不知道什么问题的情况, pull 成功了,但是远程仓库代码和本地代码竟然也不一样. 天呐,网管常规操作, ...

  4. Git提交代码冲突:commit your changes or stash them before you can merge.

    用git pull拉取远程分支代码时候遇到如下问题: error: Your local changes to the following files would be overwritten by ...

  5. git提交代码冲突解决

    1.git stash save "说明信息" 2.git stash lish 3.git pull 4.git stash pop stash@{编号}

  6. Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突

    Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突 这篇是接着上篇分布式版本库--Windows下G ...

  7. git 代码冲突处理

    在使用git pull代码时,经常会碰到有冲突的情况,提示如下信息: error: Your local changes to 'c/environ.c' would be overwritten b ...

  8. Git:代码冲突常见解决方法

    摘自: http://blog.csdn.net/iefreer/article/details/7679631 如果系统中有一些配置文件在服务器上做了配置修改,然后后续开发又新添加一些配置项的时候, ...

  9. Eclipse 的 git 插件操作 "代码提交"以及"代码冲突"

    面向对象:曾经使用过SVN的同学. (因为Git 它 可以说是双重的SVN (本地一个服务器,远程一个服务器)),提交代码要有两次步骤,先提交到本地服务器,再把本地服务器在提交到远程服务器. 所以连S ...

  10. git如何解决冲突(代码托管在coding)

    分支A提交合并请求到分支B,有冲突 git fetch code 拉取远程仓库的其他分支代码(我拉代码是remote add code所以这里是code,可以用git remote查看) git ch ...

随机推荐

  1. Solon 框架,单月下载量超100万了!!!

    Solon 框架,于2023年的四月份突冲100万下载量了.感谢开源的力量,我们同喜同荣!!!Solon 目前,是"可信开源共同体"的新成员,积极参与中科院的"开源之夏& ...

  2. java英文字符串首字母大写

    java英文字符串首字母大写 /** * 首字母大写 * @param string * @return */ public static String toUpperCase4Index(Strin ...

  3. 2021-03-24:给定一个整数组成的无序数组arr,值可能正、可能负、可能0。给定一个整数值K,找到arr的所有子数组里,哪个子数组的累加和等于K,并且是长度最大的。返回其长度。

    2021-03-24:给定一个整数组成的无序数组arr,值可能正.可能负.可能0.给定一个整数值K,找到arr的所有子数组里,哪个子数组的累加和等于K,并且是长度最大的.返回其长度. 福大大 答案20 ...

  4. 2021-08-02:按公因数计算最大组件大小。给定一个由不同正整数的组成的非空数组 A,考虑下面的图:有 A.length 个节点,按从 A[0] 到 A[A.length - 1] 标记;只有当

    2021-08-02:按公因数计算最大组件大小.给定一个由不同正整数的组成的非空数组 A,考虑下面的图:有 A.length 个节点,按从 A[0] 到 A[A.length - 1] 标记:只有当 ...

  5. Sql Server维护计划事务日志找不到目标数据库

    1.发现事务日志备份突然停止了 2.查看维护计划中的事务日志设置 3.发现备份任务中,事务日志需要指向的数据库不在 4.进入数据库属性 5.在选项中将恢复模式改为"完整"

  6. 17.AQS中的Condition是什么?

    欢迎关注:王有志 期待你加入Java人的提桶跑路群:共同富裕的Java人 今天来和大家聊聊Condition,Condition为AQS"家族"提供了等待与唤醒的能力,使AQS&q ...

  7. es笔记三之term,match,match_phrase 等查询方法介绍

    本文首发于公众号:Hunter后端 原文链接:es笔记三之term,match,match_phrase 等查询方法介绍 首先介绍一下在 es 里有两种存储字符串的字段类型,一个是 keyword,一 ...

  8. ol设置最佳可视范围和限制缩放

    目前随着科技发展,智慧城市的不断发展,GIS方面的技术也是层出不穷,如市场流行的 OPENLAYERS, CESIUM, THREE等,但是也会有很多棘手的问题,比如不同分辨率下,图层的显示范围,禁止 ...

  9. hello-iot

    iot,internet of things 环境搭建 使用真实环境 Single-board computer - Raspberry Pi Arduino - Wio Terminal 或者虚拟环 ...

  10. ARC144

    ARC 144 比赛情况:一眼订正,鉴定为做起 \(3\) 道题. A - Digit Sum of 2x \(2x\) 进位就不满足 \(M\) 最大的条件了,所以 \(x\) 不能进位. 然后要求 ...