详细了解git fetch与git pull的区别

admin3周前笔记38

image.png

git fetch和git pull都可以将远端仓库更新至本地那么他们之间有何区别?想要弄清楚这个问题有有几个概念不得不提。

FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本。
commit-id:在每次本地工作完成后,都会做一个git commit 操作来保存当前工作到本地的repo, 此时会产生一个commit-id,这是一个能唯一标识一个版本的序列号。 在使用git push后,这个序列号还会同步到远程仓库。

有了以上的概念再来说说git fetch
git fetch:这将更新git remote 中所有的远程仓库所包含分支的最新commit-id, 将其记录到.git/FETCH_HEAD文件中
git fetch更新远程仓库的方式如下:

git fetch origin master:tmp //在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支git diff tmp //来比较本地代码与刚刚从远程下载下来的代码的区别git merge tmp//合并temp分支到本地的master分支git branch -d temp//如果不想保留temp分支 可以用这步删除

(1)如果直接使用git fetch,则步骤如下:

  • 创建并更新本 地远程分支。即创建并更新origin/xxx 分支,拉取代码到origin/xxx分支上。

  • 在FETCH_HEAD中设定当前分支-origin/当前分支对应,如直接到时候git merge就可以将origin/abc合并到abc分支上。

(2)git fetch origin
只是手动指定了要fetch的remote。在不指定分支时通常默认为master

(3)git fetch origin dev
指定远程remote和FETCH_HEAD,并且只拉取该分支的提交。

git pull : 首先,基于本地的FETCH_HEAD记录,比对本地的FETCH_HEAD记录与远程仓库的版本号,然后git fetch 获得当前指向的远程分支的后续版本的数据,然后再利用git merge将其与本地的当前分支合并。所以可以认为git pull是git fetch和git merge两个步骤的结合。
git pull的用法如下:

git pull <远程主机名> <远程分支名>:<本地分支名>//取回远程主机某个分支的更新,再与本地的指定分支合并。

因此,与git pull相比git fetch相当于是从远程获取最新版本到本地,但不会自动merge。如果需要有选择的合并git fetch是更好的选择。效果相同时git pull将更为快捷。


相关文章

数据加密技术在数据安全中的作用

随着信息技术的飞速发展,数据已成为现代社会最宝贵的资产之一。然而,数据的快速增长也带来了安全风险,包括数据泄露、篡改和滥用等。数据加密技术作为保护数据安全的重要手段,其重要性日益凸显。数据加密技术概述...

凭什么说密钥比密码更好

凭什么说密钥比密码更好

密码已成为过去,密钥才是未来。也许人们已经有过这种感觉,或者已经想象过了。当意识到刚刚把登录证书输入了一个假网站的那一刻,你会感到恐慌。也许你马上就意识到了。又或者你在第二天返回后无法登录时才意识到这...

Linux下命令行如何KILL掉一个进程

Linux下命令行如何KILL掉一个进程

Linux 的命令行里面有用来停止正在运行的进程的所有所需工具想像一下:你打开了一个程序(可能来自于你的桌面菜单或者命令行),然后开始使用这个程序,没想到程序会锁死、停止运行、或者意外死机。...

看完这篇文章,还不懂nginx,算我输

看完这篇文章,还不懂nginx,算我输

1. Nginx产生~Nginx 同 Apache 一样都是一种 Web 服务器。基于 REST 架构风格,以统一资源描述符(Uniform Resources Identifier)URI 或者统一...

OpenAI 发布全新实时多模态模型 GPT-4o

OpenAI 发布全新实时多模态模型 GPT-4o

北京时间5月14日凌晨,万众瞩目的 OpenAI 发布会正式召开,发布会全长 26分钟,虽然简短,但内容及其震撼。如果要总结到底讲了什么事情,其实就是三件:发布了全新的实时多模态旗舰模型 Gpt-4o...

了解php中session垃圾回收机制

了解php中session垃圾回收机制

1、php中session的生成机制我们先来分析一下PHP中是怎么生成一个session的。设计出session的目的是保持每一个用户的各种状态来弥补HTTP协议的不足(无状态)。我们现在有一个疑问,...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。