冲突
冲突是我们在团队合作中最容易碰到的。可能你看很多文章就是先让你git pull
,然后git push
。所以,你一运行,发现可以解决了。但是你有思考过这些冲突都包括什么吗?
其他教程请看这里
白话git
所有冲突的前提:甲和你自己两个人同时拉取了一版git仓库的代码,然后分别进行开发。
冲突一:两个人修改了不同文件
在团队开发过程中这个也是最常见的。比如团队中有甲和你自己两个人。
甲:修改了A.txt的代码,git push
提交代码,没有任何问题;
你自己:修改了B.txt的代码,git push
提交代码,duang~ ,报错了。
解决方案:
- 先使用
git pull
,拉取一下代码,更新一下甲修改的文件; - 在使用
git push
提交自己修改的文件;
冲突二:两个人修改了同一文件的不同代码
甲:修改了A.txt文件的第20-30行的代码,git push
提交代码,没有任何问题;
你自己:修改了A.txt代码的第50-60行的代码,git push
提交代码,没错!duang~ duang~,又报错了。
解决方案:
解决方案也是一样的
- 先使用
git pull
,拉取一下代码,更新一下甲修改的文件; - 在使用
git push
提交自己修改的文件;
冲突三:两个人修改了同一文件的同一代码
甲:修改了A.txt文件的第20-30行的代码,git push
提交代码,没有任何问题;
你自己:修改了A.txt代码的第20-60行的代码,git push
提交代码,没错!duang~ duangduang,又又报错了。
这是为什么呢?
因为你们两个人都修改了同一个文件的同一代码,git不知道该使用你们两个谁的修改的代码了,需要你们手动解决一下。这是唯一一个需要手动解决的冲突,因为git不知到该采用你们两个谁的
解决方案:
-
先使用
git pull
,拉取一下代码,更新一下甲修改的文件; -
在使用
git push
提交自己修改的文件,报错肯定是在你执行git push
操作的时候出现的。 -
这个就需要你和甲来商量了,到底是使用甲修改的代码,还是你修改的代码。这个一定是需要经过商量的。不商量直接改成自己的你怕是会被打!
-
商量好了用谁的代码了。我们就需要手动修改了:
- <<<<<<<HEAD和=======之间的是你同事就是甲修改的代码;
- =======和>>>>>>> f541ce9470ebfe6be304102c295546151e36b72a之间的是你修改的代码。
<<<<<<< HEAD <div>甲同事修改的代码</div> ======= <div>你修改的代码</div> >>>>>>> f541ce9470ebfe6be304102c295546151e36b72a
-
比如商量好用甲同事的代码了那么代码就变成了。
<div>甲同事修改的代码</div>
-
商量好用你的代码,就变成了
<div>你修改的代码</div>
-
无论哪种都需要手动删除
<<<<<<<
或>>>>>>>
和=======
之间的代码。包括这些符号,因为前端代码是不认识这些符号的。- 解决好之后,正常操作即可:
git add
-->git commit -m 'fix:解决代码冲突'
-->git push
- 解决好之后,正常操作即可:
冲突四:甲修改了文件名称,你还在原来的文件名字上面修改代码
甲:将A.txt的文件名称修改成了B.txt,git push
提交代码,没有任何问题;
你自己:但是你这里的本地代码还是A.txt,你还在文件名称是A.txt的文件里面写代码呢,git push
提交代码,duangduangduang~,报错了。
那么你可能会疑问,既然甲改了文件名字,我还在A.txt文件上面操作,我写的代码怎么办?还是在A.txt里面还是怎样?
解决方案:
- 先使用
git pull
,拉取一下代码,更新一下甲更改的名称B.txt;这一步git自动将你修改的A.txt的代码,更新到了B.txt文件里面。这个操作时git自己完成的,这也是git强大的一点。 - 再使用
git push
提交自己修改的文件;
综上
现在终于明白了为什么使用git pull
和git push
就可以解决大部分代码冲突了吧。
除了多个人修改同一行代码的问题都可以先pull 再push。那么有人会问了,什么时候才能判断是不是修改的同一行代码出现的问题呢?
- 当你先pull后push 之后发现问题怎么也解决不了的时候肯能就是这个问题;
- 或者你也可以使用vscode编辑器看一下,这个是查看代码修改最方便的一款编辑器了