Git pull 与 fetch:有什么区别?
git fetch和pull之间的主要区别在于,git pull会将更改从远程存储库直接复制到您的工作目录中,而git fetch则不会。git fetch命令仅将更改复制到您的本地 Git 存储库中。git pull命令同时执行这两项操作。
要真正理解 pull 和 fetch 之间的区别,您必须知道 Git 安装的结构。
在用户的工作站上,Git 安装包括以下项目:
- 本地 Git 存储库,其中维护所有分支的所有提交的历史记录。
- 开发人员主动编辑和更新 Git 跟踪的文件的工作目录。
git pull命令的好处
如果开发人员发现 GitHub 等远程存储库上有新的、更新的文件,他们可能会希望将这些更改从 GitHub 复制到本地存储库和工作目录中。
这就是git pull命令的作用。git pull命令会更新用户的本地 Git 存储库及其工作目录中的文件。
这为开发人员带来了两个好处:
- 本地 Git 仓库现已与远程仓库同步。
- 本地文件系统拥有最新的、最新的文件。
git pull命令有一个先决条件:用户不能主动编辑其本地工作区中与远程服务器上的内容冲突的任何跟踪文件。
如果 Git 注意到用户工作区中存在任何冲突的文件,它会中止更新用户工作区的任务,并且仅更新用户的本地 Git 存储库。
git fetch命令的好处
如果您正在积极处理 Git 跟踪的文件,但仍希望使用远程存储库中的最新更改来更新本地存储库,请使用git fetch命令。
git fetch使用来自远程仓库的所有最新更改来更新您的本地仓库,但不会对您的本地工作区进行任何更改。
git fetch与git pull相比的好处是,通过 fetch 你可以继续编辑本地工作目录中的文件,而无需将你的代码与远程存储库中的更新合并。
使用git fetch,您可以在本地完成文件编辑,提交文件,然后执行git merge以将您的更新与获取的文件同步。这样您就可以及时了解从远程计算机提取的更新。
领先还是落后?
git fetch的另一个好处是,它允许您查明您正在处理的分支是领先还是落后于服务器上的分支。
在下面的例子中,git status命令告诉我们服务器上的origin/master分支已经更新。
然而,当我们执行git fetch时,我们被告知我们实际上在服务器上的主 Git 分支后面有三个提交。
如果你想知道本地分支与服务器上的分支相比领先或落后多少,可以使用git fetch命令和git status来了解。
中止的git pull是一次获取
如果您尝试执行git pull操作,但您的工作目录中有未提交的文件,或者将远程文件复制到您的工作区会产生合并冲突,则git pull操作会短路并改为git fetch操作。远程存储库中的所有更新都会复制到您的本地 Git 存储库中,但系统不会影响您的本地工作区。
这强调了git pull实际上是两个操作合二为一:git fetch和git merge命令。如果开发人员成功地接连发出git fetch和git merge命令,其结果相当于git pull。
我应该使用git fetch还是git pull?
如果您的工作区没有未提交的文件,并且您想要将最新更改从远程存储库直接复制到您的工作目录中,请发出git pull命令。
如果您想从远程存储库中提取最新更改而不覆盖工作目录中的任何内容,请使用git fetch,然后在适当的时候执行git merge 。
●VON: 优质好文,博主的文章细节很到位,兼顾实用性和可操作性,感谢博主的分享,期待博主持续带来更多好文
Daniel的万事通杂货铺: 做技术需要我们多研究和写一些文章,能写领域方面文章,技术和业务都逐渐是在进步,大家共勉!
普通网友: 文章内容通俗易懂,适合不同层次的读者。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】