git fetch
是将远程主机的最新内容拉到本地,不会合并到当前工作分支,用户在检查了以后决定是否合并到工作本机分支中。
而 git pull
则是将远程主机的最新内容拉下来后直接合并,这样可能会产生冲突,需要手动解决。
参考:https://www.cnblogs.com/runnerjack/p/9342362.html
git fetch
命令通常用来查看其他人的进程,因为它取回的代码对你本地的开发代码没有影响。
参考:https://www.cnblogs.com/xiaopangjr/p/7469687.html
git fetch:
这时候我们本地相当于存储了两个代码的版本号,我们还要通过merge去合并这两个不同的代码版本,如果这两个版本都修改了同一处的代码,这时候merge就会出现冲突,然后我们解决冲突之后就生成了一个新的代码版本。
注意:图中的git fetch origin master是拉取远程的指定分支,使用git fetch的话是拉取所有分支。
git fetch: 拉取所有分支到本地副本
git fetch origin master:拉取远程master分支到本地,数据会保存在本地副本master中
git merge origin/master: 将当前分支与本地副本origin/master合并
而git pull就很直接:
1、git fetch:拉取远程数据到本地仓库
缺点:会拉取当前项目的所有分支的commit
$ git fetch remote: Counting objects: 6, done. remote: Compressing objects: 100% (4/4), done. remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (6/6), done. From https://github.com/xxxxxxxxxx 7c5a386..b008b08 abc -> origin/abc ff47932..6f28960 master -> origin/master
参考:https://blog.csdn.net/Mooner_guo/article/details/49674497
2、git fetch origin abc: 拉取远程的abc分支的数据,不会拉取所有分支
(origin是clone时创建的标签字,它默认指向远程代码库,参考:https://www.zhihu.com/question/27712995)
注意:
git pull 并不是完全等于 git fetch+git merge,原因:
git pull 会直接将本地的代码更新至远程仓库里面最新的代码版本,commitID 都是2
git fetch 之后 git merge,如果遇到了冲突就会生成的新版本,这时候 commitID 为 3