git pull 与 git push 区别

git pull 与 git push 区别


结论先行:

1、git pull = git fetch + git merge
2、git fetch 只会将本地库所关联的远程库commit ID 更新到最新
3、git pull 将本地库所关联的远程库commit ID 更新到最新的同时,还自动合并了远程仓库的代码(冲突另外说)

白菜实验一:

人物:小白与小菜
前提:协同开发,关联同一个远程仓库,本地版本相同
假设:小白添加一个25M的 文件后提交并推送到远程仓库

小菜在本地执行 git fetch
执行 git diff / git reflog / git log 结果无差异
执行 git status 提示落后远程仓库一个版本

查看并比较 小白与小菜 的文件夹属性
小白的文件夹明显比小菜的文件夹多了 25M

此时,在本地看不到任何区别,只是知道落后于远程仓库多少个版本
(可以推出: git fetch 只会将本地库所关联的远程库commit ID 更新至最新)

紧接着,小菜在本地执行 git merge
执行 git diff / git status 没有区别
执行 git reflog / git log 看到了版本升级了

查看并比较 小白与小菜 的文件夹属性
两人项目大小差不多,文件基本一样
(可以推出:git merge 才会把文件合并过来,此时才修改本地库代码)

白菜实验二:

人物:小白与小菜
前提:协同开发,关联同一个远程仓库,本地版本相同
假设:小白添加一个25M的文件后提交并推送到远程仓库

小菜在本地执行 git pull
执行 git diff / git status 结果无差异
执行 git reflog / git log 看到了版本升级了

查看并比较 小白与小菜 的文件夹属性
两人项目大小差不多,文件基本一样
(可以推出:git pull 将本地库所关联的远程库commit ID 更新到最新的同时,还自动合并了远程仓库的代码)

(比较两个实验可以发现:git pull = git fetch + git merge)

知识发现:

1、git status 中的一个功能是 比较 本地库commit ID 与 本地库所关联的远程库commit ID 的关系
2、解决冲突后,执行 git diff 无法查看修改了什么,是由于有两个上级导致的
3、谁先在工作区,发生冲突后去解决冲突时,谁就在冲突分割符(=====)的上面

渴望力量:

1、不足之处,望各位小伙伴可以多多指出
2、疑问之处,可以私聊,很开心能一起探讨

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章