美文网首页
git冲突的解决

git冲突的解决

作者: 不可妥协 | 来源:发表于2020-11-27 14:59 被阅读0次

  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冲突的解决

      本文链接:https://www.haomeiwen.com/subject/tgjziktx.html