Git pull 与 fetch:有什么区别?

git fetchpull之间的主要区别在于,git pull会将更改从远程存储库直接复制到您的工作目录中,而git fetch则不会。git fetch命令仅将更改复制到您的本地 Git 存储库中。git pull命令同时执行这两项操作。

要真正理解 pull 和 fetch 之间的区别,您必须知道 Git 安装的结构。

在用户的工作站上,Git 安装包括以下项目:

  • 本地 Git 存储库,其中维护所有分支的所有提交的历史记录。
  • 开发人员主动编辑和更新 Git 跟踪的文件的工作目录。

git fetch 与 merge

git pull操作相当于git fetch和merge。

git pull命令的好处

如果开发人员发现 GitHub 等远程存储库上有新的、更新的文件,他们可能会希望将这些更改从 GitHub 复制到本地存储库和工作目录中。

这就是git pull命令的作用。git pull命令会更新用户的本地 Git 存储库及其工作目录中的文件。

这为开发人员带来了两个好处:

  1. 本地 Git 仓库现已与远程仓库同步。
  2. 本地文件系统拥有最新的、最新的文件。

git pull命令有一个先决条件:用户不能主动编辑其本地工作区中与远程服务器上的内容冲突的任何跟踪文件。

如果 Git 注意到用户工作区中存在任何冲突的文件,它会中止更新用户工作区的任务,并且仅更新用户的本地 Git 存储库。

git fetch命令的好处

如果您正在积极处理 Git 跟踪的文件,但仍希望使用远程存储库中的最新更改来更新本地存储库,请使用git fetch命令。

git fetch使用来自远程仓库的所有最新更改来更新您的本地仓库,但不会对您的本地工作区进行任何更改。

git fetchgit pull相比的好处是,通过 fetch 你可以继续编辑本地工作目录中的文件,而无需将你的代码与远程存储库中的更新合并。

使用git fetch,您可以在本地完成文件编辑,提交文件,然后执行git merge以将您的更新与获取的文件同步。这样您就可以及时了解从远程计算机提取的更新。

领先还是落后?

git fetch的另一个好处是,它允许您查明您正在处理的分支是领先还是落后于服务器上的分支。

在下面的例子中,git status命令告诉我们服务器上的origin/master分支已经更新。

然而,当我们执行git fetch时,我们被告知我们实际上在服务器上的主 Git 分支后面有三个提交。

如果你想知道本地分支与服务器上的分支相比领先或落后多少,可以使用git fetch命令和git status来了解。

git fetch 与 pull ahead 对比

git fetch 会告诉您领先或落后了多少次提交。

 

中止的git pull一次获取

如果您尝试执行git pull操作,但您的工作目录中有未提交的文件,或者将远程文件复制到您的工作区会产生合并冲突,则git pull操作会短路并改为git fetch操作。远程存储库中的所有更新都会复制到您的本地 Git 存储库中,但系统不会影响您的本地工作区。

这强调了git pull实际上是两个操作合二为一:git fetchgit merge命令。如果开发人员成功地接连发出git fetchgit merge命令,其结果相当于git pull

我应该使用git fetch还是git pull

如果您的工作区没有未提交的文件,并且您想要将最新更改从远程存储库直接复制到您的工作目录中,请发出git pull命令。

如果您想从远程存储库中提取最新更改而不覆盖工作目录中的任何内容,请使用git fetch,然后在适当的时候执行git merge 。

git pull 和 fetch 比较

Git pull 并获取从远程 GitHub 或 GitLab repo 本地复制的更改。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值