千家信息网

git中“git fetch”与“git pull”有什么区别

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章给大家分享的是有关git中"git fetch"与"git pull"有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。git fetch和git pull都
千家信息网最后更新 2025年02月02日git中“git fetch”与“git pull”有什么区别

这篇文章给大家分享的是有关git中"git fetch"与"git pull"有什么区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

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 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库(git remote -v)并默认以 "origin" 为简写。 所以,git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作。 必须注意 git fetch 命令会将数据拉取到你的本地仓库 - 它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。

如果你有一个分支设置为跟踪一个远程分支,可以使用 git pull命令来自动的抓取然后合并远程分支到当前分支。 这对你来说可能是一个更简单或更舒服的工作流程;默认情况下,git clone 命令会自动设置本地 master 分支跟踪克隆的远程仓库的 master 分支(或不管是什么名字的默认分支)。 运行 git pull 通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。

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将更为快捷。

注:用git pull更新代码的话就比较简单暴力了但是根据commit ID来看的话,他们实际的实现原理是不一样的,所以不要用git pull,用git fetch和git merge更加安全。

感谢各位的阅读!关于"git中"git fetch"与"git pull"有什么区别"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

分支 仓库 更新 命令 版本 代码 工作 数据 内容 序列 序列号 手动 指向 文件 更多 概念 步骤 篇文章 跟踪 选择 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 资溪软件开发培训班 解除好友网络安全 我的世界服务器怎么才更好玩 浙江电脑服务器租用云服务器 电脑云服务器管理软件 网络安全产业园北京 网络安全年报统计 广州电商软件开发靠谱吗 安全软件代理服务器 数据库1136错误代码 网络技术与应用江苏大学 互联网平安科技有限公司 嵌入式软件开发效率 网络技术应用工程 分布式数据库设计的第六章 最新无源光纤网络技术 防拐卖防诈骗网络安全手抄报内容 数据库的验证模式应改为 数据库职业有什么区别 搜信三亚网络技术服务有限公司 做数据库运维的大公司有哪些 网络安全周宣传 总结 二手软件开发的前景有哪些 服务器碳排放指标 vue富文本框保存数据到数据库 吉比特以太网网络技术特点 单位网络安全半年工作总结 全国移动互联软件开发大赛 网络技术应用工程 网络安全的本质在攻防两端
0