详解git fetch和git pull区别

前言

git fetch和 git pull 都可以将远程仓库更新到本地,那么它们有什么区别呢?想要弄清楚这个问题,有几个概念不得不提。

fetch_head

是一个版本连接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本。

commit-id

在每次本地工作完成后,都会做一个git commit操作提交当前操作到本地仓库,此时会产生一个commit-id,这是唯一一个能标识这个版本的序列号,在使用git push后,这个序列号还会同步到远程仓库。

git fetch

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

//在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
git fetch origin master:tmp 

//来比较本地代码与刚刚从远程下载下来的代码的区别
git diff tmp 

//合并temp分支到本地的master分支
git merge tmp

//如果不想保留temp分支 可以用这步删除
git branch -d temp

git pull

首先基于本地的fetch_head记录,比对本地的fetch_head记录与远程的的版本号,然后git fetch获得当前指向的远程分支的后续版本的数据,然后再利用git merge将其与本地的当前分支合并。所以可以认为: git pull = git fetch + git merge
git pull的用法如下

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

因此,git fetch是从远程获取最新版本到本地,但不会自动merge。
而git pull则是会获取所有远程索引并合并到本地分支中来。效果相同时git pull将更为快捷。

区别是什么? git fetchgit pull都是用来从远程仓库获取最新的代码更新,但它们之间有一些区别。 1. 远端跟踪分支不同:git fetch只会将远程仓库的最新代码下载到本地,但不会直接合并到当前分支上。而git pull会将最新代码拉取下来并直接合并到当前分支上。 2. 拉取方式不同:git fetch会将远程仓库的最新代码下载到本地的一个特殊的分支,而不会修改任何已有的分支。而git pull会直接将最新代码拉取到当前分支,并与本地已有的代码进行合并。 3. commit ID不同:由于git fetch只是将最新代码下载到一个特殊的分支,因此它不会修改本地分支的commit ID。而git pull会将最新代码拉取到当前分支,并创建一个新的commit ID。 综上所述,git fetchgit pull区别在于远端跟踪分支的处理、拉取方式以及commit ID的变化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [gitpullfetch区别是什么](https://blog.youkuaiyun.com/weixin_45549481/article/details/128564006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [git fetch & pull详解](https://blog.youkuaiyun.com/u010074988/article/details/118406786)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值