git冲突的解决

  git提交总体分为add、commit、pull、push三个步骤,仅这三个操作一般只适合单人开发的项目;几乎没有某个工程是一个人能够完成的;多人开发必然会遇到多人提交,代码冲突时有发生;那么如何解决代冲突?

  当你和合作者同时修改了同一行代码时,你在项目中直接进行git pull命令时,就会产生冲突:

error: Your local changes to the following files would be overwritten by merge: xxxxx ; Please commit your changes or stash them before you merge

  1)、我们可以按照所提示的第一种方式,先add commit 本地代码至本地的git仓库;再执行 git pull 命令,这样本地git会将远程仓库和本地最新的一次 commit 记录合并,产生一个新的 merge 记录,推送到远程 git 仓库后,通过工具可以查看版本树的变化:

1606457750(1).jpg

黑色线条为版本主干,红色就是本次 merge 时,git 将冲突在本地解决后,生成一个新的支,git push 后又合并到主干。

  2)、也可以先stash push -m 'xxx',这样本地工作区恢复到最后一个更新远程仓库时的状态,此时进行git pull命令,由于工作区无改变内容,就可以顺利的同步到最新代码,这个时候再将刚刚储存在暂存区的文件取出来,用来在工作区进行合并 git stash pop,解决好冲突行,再次进行add commit push;解决冲突时要注意,由于更改的内容是从 stash中提取出来的,所以自己修改的内容为最后的修改

  至此,一般情况下会自动合并;但是如果更新下来的代码和本地你自己修改的代码同一行有差异,这时候就需要手动合并:打开需要手动合并的文件,<<<<<< 下的代码,表示旧的代码片段,======= 下的代码,表示新的代码片段,自己判断哪些要删除,哪些要保留的内容,保存后就可以按正常操作流程提交了。

以上两种方式都可以,区别是:
  第一种方式会造成版本树看起来比较乱,提交时备注的信息会被merge生成的信息覆盖,很久以后查询历史提交记录造成不便;
  第二种方式会让整个版本树看起来很简洁,几乎只有一条黑色的节点线自下而上,每个人的提交信息一览无余,清晰可见;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Git冲突:commit your changes or stash them before you can me...
    angerLE阅读 1,124评论 0 2
  • 公司的IOS项目比较简单,开发人员也比较少,基本用不到什么版本管理。 为了自我提升,我自己在GitHub上建了个版...
    Liebling_zn阅读 1,767评论 1 1
  • 使用git和提交的代码有所冲突,用IDE自带的git工具功能多了反而不知道怎么下手,总怕会出现事故,所以还是老老实...
    九四年的风阅读 1,105评论 0 2
  • 发现冲突 情景,aa/a.txt中的,bb=1 修改本地的aa/a.txt中的,bb=3 在服务器也修改了aa/a...
    吕艳凯阅读 3,968评论 0 0
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 4,329评论 0 13