原文
http://www.tech126.com/git-fetch-pull/
两者区别
Git中从远程的分支获取最新的版本到本地有这样2个命令:
git fetch
相当于是从远程获取最新版本到本地,不会自动merge
git fetch origin master
git log -p master origin/master
git merge origin/master
以上命令的含义:
- 首先从远程的origin的master主分支下载最新的版本到origin/master分支上
- 然后比较本地的master分支和origin/master分支的差别
- 最后进行合并
上述过程其实可以用以下更清晰的方式来进行:
git fetch origin master:tmp git diff tmp git merge tmp
从远程获取最新的版本到本地的tmp分支上之后再进行比较合并
git pull
相当于是从远程获取最新版本并merge到本地
git pull origin master
- 上述命令其实相当于git fetch 和 git merge
- 在实际使用中,git fetch更安全一些
- 因为在merge前,我们可以查看更新情况,然后再决定是否合并
总结
参考:https://blog.csdn.net/weixin_41975655/article/details/82887273 的回复
git在本地会保存两个版本的仓库,分为本地仓库和远程仓库。
- 本地仓库就是我们平时 add、commit 的那个仓库。
- 远程仓库可以用git remote -v查看(这里的远程仓库是保存在本地的远程仓库,等同于另一个版本,不是远程的远程仓库)。
下面说说 fetch 和 pull 的不同。
- fetch 只能更新远程仓库的代码为最新的,本地仓库的代码还未被更新,我们需要通过 git merge origin/master 来合并这两个版本,你可以把它理解为合并分支一样的。
- pull 操作是将本地仓库和远程仓库(本地的)更新到远程的最新版本。 如果想要更加可控一点的话推荐使用fetch + merge。