git fetch和git pull的区别
【是什么】:平时开发经常遇到不清楚的问题就百度/google,目的是能快速使用并解决问题。这时我们没有花太多时间去深入理解,只求能快速解决手头问题。
【为什么】但是如果要深入理解的话,发现有时候百度出来的技术文章不全面、不够深入,甚至不同文章或者评论说法是相反的,这时我们再看这些二手的技术文章就是浪费时间了,甚至会被引导至错误的方向。
此时,如果我们要深入、透彻理解的话就要去看官方技术文档了,尤其是英文原版官方技术文档!!!
【要点提取】git fetch就是仅仅的拉取远程仓库的数据,但是不合并。git pull不仅拉取远程仓库的数据,还并且要合并。
步入正题:
git-fetch- Download objects and refs from another repository
Fetch branches and/or tags (collectively, "refs") from one or more other repositories, along with the objects necessary to complete their histories. Remote-tracking branches are updated (see the description of <refspec> below for ways to control this behavior).
翻译:
git-fetch - 从另一个仓库中拉取(下载)相关数据
从一个或者多个仓库中拉取分支或者tag标签(统称refs),以及相关历史记录信息。远程跟踪分支会被更新。
git-pull - Fetch from and integrate with another repository or a local branch
Incorporates changes from a remote repository into the current branch. In its default mode, git pull
is shorthand for git fetch
followed by git merge FETCH_HEAD
.
More precisely, git pull runs git fetch with the given parameters and calls git merge to merge the retrieved branch heads into the current branch.
翻译:
git-pull - 从另一个仓库或者本地分支拉取数据并合并
git pull会把远程仓库中的更改合并到当前分支。默认情况下,git pull是git fetch + git merge FETCH_HEAD的缩写。
更准确地说,git pull使用给定的参数执行git fetch,并调用git merge将检索到的分支头合并到当前分支中。
综上所述,git fetch就是仅仅的拉取远程仓库的数据,但是不合并。git pull不仅拉取远程仓库的数据,还并且要合并。
个人认为,日常工作中,一般用git pull,方便快捷;git fetch在某些场景下,更加安全;
官方文档链接:
https://www.git-scm.com/docs/git-fetch
https://www.git-scm.com/docs/git-pull
【怎么做】经过查询英文原版官方文档,对于二者的区别有了清晰的了解。网上翻译过来的、加上自己理解写出来的文章(包括本文~~)并不一定准确,甚至是错误的!
所以强烈建议:快速解决问题,可以百度/google后立即试错、使用;深入理解就要阅读英文原版官方技术文档!!!英文原版官方技术文档!!!英文原版官方技术文档!!!
PS: 平时经常查阅网上各位童鞋、大佬们分享的技术文章,甚是感激!帮助自己解决了很多问题,大大提高了工作的效率。
所以自己也怀着感激之情也想多多分享各种技术相关的文章,但是发现分享真不是一件轻松的事情。做记录给自己看和写文章分享给别人看,所花费的时间真的不是一个量级。。。🤣
那些长期分享技术文章的各位大佬真的花费了很多个人的时间和精力,能够长期坚持下来真不是一件轻松的事情,感谢感谢!!分享让这个世界更美好🙃
@阮一峰@所有乐于分享的各位同学、各位大佬😍