案例场景
日常大家一个项目组中所有人共同维护一个项目,时常会有多人修改了同一个文件的情况,提交的时候又刚好在同一个时间段提交,先提交的修改发起merge request被合并,后提交的人发起merge request后就会产生冲突,这样就有人告诉你,你的代码有冲突。这时就需要你来解决冲突了。
解决方法
针对于上面产生的冲突。你可以这样做。
首先使用git pull在自己的本地develop分支上更新最新的代码。
然后切换到需要解决冲突的分支下。
使用git checkout 有冲突的分支,切换到自己有冲突的分支;
使用git status查看状态;
使用git merge 远程分支 自己当前的分支,来合并别人的提交内容到自己的分支上;
此时可以从上图中看到会出现下面类似的关键字。CONFLICT,代表有冲突。
使用git status查看状态,可以看到一些自己好像没有修改的文件,但是状态却显示已经修改。像下面这样。
此时就是懵逼。于是可以将缓存区的标成绿色的文件拉出来。
使用指令:git add -i。
关于git add -i的使用我前面的文章:。有提到,可查阅。
将缓存区的文件拉出来之后,使用git status查看状态,可以看到类似下面的展示,文件已经从暂存区拉出来到工作区。
可以看到现在还是在带有“|MERGING”的分支下。所以这里可以使用指令git merge --abort指令来退出MERGING.
接下来可以使用git log查看提交日志,然后回退。这里这个方法比较笨,因为作者没有找到其它的方法来解决这个问题,有不同的方法的人,欢迎给出解决办法,最好详细一点。
接着查看日志,回退到没有冲突的那个节点。
其中绿色框中的描述为当时产生冲突的提交,所以回退到没有冲突的时候,即产生冲突的提交的上一次提交。即图中为蓝色框中的那次提交,拷贝蓝色框中的编号。使用指令:git reset 编号回退。
回退之后,使用git status查看状态,看看是否为自己当初修改后未提交时的状态。
然后使用git pull来更新最新的代码。拉取的时候可能会产生error,这时可以将自己本地的修改使用git stash暂存起来。
再次使用git pull拉取最新的代码。
再使用git stash pop将之前暂存的代码从暂存区拉出来。
若是有冲突,这时就解决冲突。可以编译一下项目,要是编译报错,定位到报错点,修改相应的错误。
编译无错后,提交代码。
以上的方法比较笨,并不是一个很好的方法。欢迎有好的方法的指导,作者比较迟钝,望指导的时候详细一点。文章来源:https://www.toymoban.com/news/detail-613554.html
附上参考文章
https://zhuanlan.zhihu.com/p/397267546#:~:text=%E6%89%8B%E5%8A%A8%E4%BF%AE%E6%94%B9%20READ.md%20%E6%96%87%E4%BB%B6%E5%8E%BB%E6%8E%89%E5%86%B2%E7%AA%81%EF%BC%8C%E6%AF%94%E5%A6%82%E4%BF%AE%E6%94%B9%E4%B8%BA%EF%BC%9A%20This%20is%20second%2Fthird%20commit.%20%E7%84%B6%E5%90%8E%E4%BD%BF%E7%94%A8,add%20%E5%B0%86%E8%AF%A5%E6%96%87%E4%BB%B6%E6%B7%BB%E5%8A%A0%E5%88%B0%E6%9A%82%E5%AD%98%E5%8C%BA%E3%80%82%20%E5%88%9A%E6%89%8D%E9%81%87%E5%88%B0%E5%86%B2%E7%AA%81%E5%90%8E%EF%BC%8Cmerge%20%E8%BF%87%E7%A8%8B%E5%B0%B1%E8%A2%AB%E4%B8%AD%E6%96%AD%E4%BA%86%EF%BC%8C%E7%8E%B0%E5%9C%A8%E4%BD%BF%E7%94%A8%20git%20merge%20–continue%20%E7%BB%A7%E7%BB%AD%E5%90%88%E5%B9%B6%E8%BF%87%E7%A8%8B%E3%80%82
此文章给出了解决冲突的办法。文章来源地址https://www.toymoban.com/news/detail-613554.html
到了这里,关于git提交文件的时候与别人刚好修改的是同一个文件,进而导致冲突的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!