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、疑问之处,可以私聊,很开心能一起探讨

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值