git pull的使用原因

在实际应用中,有时候会出现本地仓库和线上仓库不一致的情况,因为在企业级的开发中往往是多人协同,这个时候就需要 git pull 抓取远程仓库的内容。比如本地内容是[1,2],线上的内容是[2,3],那么pull之后本地内容就会变成[1,2,3]。如下,
git pull - 图1

代码冲突

举例子:

比如仓库原有的内容为[2],小明和小红分别负责开发1和3, git clone 之后本地都是[2],小红先完成了开发,提交到GitHub,远程仓库的内容就变成了[2,3]。当小明完成开发后,就必须先pull一下,否则无法提交代码。

小明 git pull 之后本地内容就变成了[1,2,3],再 git push 远程仓库就变成了[1,2,3]。
所以在协同开发时,每一次提交之前, **git pull** 是一个好习惯,避免冲突。

什么情况下可以提交

远程仓库的代码和本地仓库的代码彼此有一方是对方的真子集。

  1. 本地仓库是远程仓库的真子集,可以提交

git pull - 图2

  1. 远程仓库是本地仓库的真子集,可以提交

图3(1).png

  1. 修改后也可以提交到远程仓库


图4(1).png**

  1. 如果是例子中的情况,彼此不为对方的真子集,就不可以提交

图5(1).png

  1. 如果本地内容和远程内容一致,也不可成功提交,会有提示无需提交

图6(1).png

手动解决冲突的情况

场景:

  1. 仓库原有的内容为[A,2],小A负责修改文件 A ,小A负责开发文件 3git clone 后本地都是[A,2]
  2. 小B本来只负责修改 3 ,但是出于种种原因,他修改了 A 的代码,变成了文件 a ,然后完成开发提交到了远程仓库,远程仓库的内容变成了[a,2,3]。
  3. 当小A完成开发后,本地内容为[A1,2],和远程仓库的内容出现了冲突,就无法提交, git pull 之后需要手动找到并把小B修改的部分还原才可以提交。

图7.png