当前位置: 首页 > news >正文

git 命令里的存档和检出的区别

这是一个非常核心的 Git 概念。简单来说:

  • 存档:获取项目文件的一个快照,但不包含 Git 历史记录。它用于分发部署代码。
  • 检出:切换你的工作目录到某个提交、分支或标签的状态,并保留完整的 Git 历史记录。它用于开发探索代码。

下面我们来详细解释和对比。


Git 存档

git archive 命令用于将仓库中的特定版本(通常是一个分支、标签或提交)的文件打包成一个压缩文件(如 .zip.tar.gz),但这个压缩文件不包含 .git 文件夹

核心特点:

  1. 只读快照:它生成的是项目文件在某个时间点的静态副本。
  2. 无 Git 信息:生成的归档文件中没有 .git 目录,因此它不是一个 Git 仓库,你不能在这个目录里执行 git commitgit log 等操作。
  3. 用于分发:它的主要目的是将代码打包,用于发布、部署到生产服务器或分享给不需要完整开发历史的人。

常用命令示例:

# 将当前分支的最新提交打包成 zip 文件
git archive --format=zip --output=project-v1.0.zip HEAD# 将名为 v1.0 的标签打包成 tar.gz 文件
git archive --format=tar.gz v1.0 > project-v1.0.tar.gz# 将某个特定分支(如 develop)打包
git archive --format=zip -o develop-latest.zip develop

使用场景:

  • 部署代码到生产环境。
  • 将代码作为附件发送给客户或设计师。
  • 创建项目的源代码压缩包以供下载。

Git 检出

git checkout 是一个功能强大且常用的命令,它的核心作用是切换工作目录的状态

核心特点:

  1. 切换上下文:它让你在不同的开发线(分支、提交、标签)之间移动。
  2. 保留 Git 仓库:切换后,你的工作目录仍然是一个完整的 Git 仓库(包含 .git 文件夹),你可以查看完整的历史记录、创建新分支、提交更改等。
  3. 影响工作目录:执行 git checkout 会直接改变你本地文件夹中的文件内容,使其与你切换到的目标状态一致。

常用命令示例:

# 切换到另一个已存在的分支(如 feature/login)
git checkout feature/login# 创建并切换到一个新分支
git checkout -b new-feature-branch# 切换到某个特定的标签(这会使你处于“分离头指针”状态)
git checkout v1.0# 切换到某个特定的提交(同样处于“分离头指针”状态)
git checkout a1b2c3d

注意: 在较新版本的 Git 中,为了更清晰的语义,推荐使用 git switch 来切换分支,使用 git restore 来恢复文件。

# 切换分支(推荐)
git switch main
git switch -c new-branch# 恢复文件到某个版本(推荐)
git restore file.txt

使用场景:

  • 在日常开发中,从一个功能分支切换到主分支。
  • 回退到某个旧版本去修复 bug 或查看代码。
  • 基于某个标签或提交创建新的分支进行开发。

核心区别总结

特性Git 存档Git 检出
目的分发/部署开发/切换
输出物一个压缩文件(如 .zip, .tar.gz更新后的工作目录
Git 历史不包含(无 .git 文件夹)包含(完整的 Git 仓库)
可操作性静态文件,不可进行 Git 操作动态的 Git 工作区,可进行所有 Git 操作
对工作目录的影响不影响当前工作目录会改变当前工作目录的文件内容
常用命令git archivegit checkout / git switch

一个生动的比喻

  • Git 存档 就像给一辆汽车拍照。你得到了一张漂亮的静态图片,可以打印出来、发给别人或挂在墙上,但你无法驾驶这辆照片里的车。
  • Git 检出 就像你坐进另一辆同款汽车的驾驶舱。你可以启动它、驾驶它、甚至对它进行改装,因为它是一辆真正的、功能完整的汽车。

希望这个解释能帮助你清晰地理解它们之间的区别!

http://www.dtcms.com/a/553798.html

相关文章:

  • 杰理芯片SDK-杰理SDK工程框架介绍
  • 家教中介网站怎么做学员引流用万网做网站
  • C# TaskCompletionSource.SetResult 用法详解
  • 网站建设模板html网站开发工程师岗位职责要求
  • 【Linux network和NetworkManager双网卡主备模式绑定】
  • SSO 单点登录
  • Linux 中如何查看系统的位数
  • 云南建设企业网站修改wordpress首页缩略图尺寸
  • 网站的投票系统怎么做wordpress文章类模板
  • AI智能体如何让用户洞察更简单、更快速、更精准
  • 离线测试与在线测试
  • linux安装kafka
  • 13. React中为什么使用setState
  • 电力电子技术 第十章——可控整流器
  • 高端网站建设seo电子商务网站建设携程
  • 知名网站制作全包19寸 网站做多大
  • MoE (Mixture of Experts)
  • 福建省城乡建设厅网站wordpress演示地址转换短网址
  • 实验:服务端建立nfs服务 客户端挂载该服务
  • 大数据分析与应用实验报告(黑龙江大学)
  • 网站整体结构企业邮箱如何查询
  • GRUB配置文件解析与启动流程详解
  • 静态 IP 深度用户体验手记:Cliproxy 稳定性与便捷性实测
  • 基于Springboot + vue3实现的药材中药资源共享平台
  • 杭州的设计网站建设企业网站建设原则是
  • Configuration Key
  • sns社交网站源码上海有限公司有哪些
  • 基于React的开源框架Next.js、UmiJS、Ant Design Pro
  • KVM在centos上离线安装
  • gateway配置自定义转发