多次git add拆解

分步拆解全过程,一目了然

前提概念

  1. 工作区:电脑文件夹里实实在在的文件(你打开编辑的文件)
  2. 暂存区(stage/index) :git add 提交进去的快照,等待被 commit 固化成提交记录
  3. 本地仓库 :git commit 之后永久保存的版本

举个实操例子

步骤1:新建/修改文件 a.txt,写入内容:111

文件在工作区改动,暂存区无变化

步骤2:执行 git add a.txt

✅ 暂存区存入:a.txt = 111

此时:

  • 暂存区:保存111版本
  • 工作区:依旧是111,二者内容一致

步骤3:不commit,继续修改 a.txt,改成:222

现在状态拆分:

  1. 工作区:最新内容 222
  2. 暂存区 :依然保留上一次add的旧内容 111(不会自动更新)
    两个地方内容不一样

步骤4:再次执行 git add a.txt

本次add会用工作区最新内容,覆盖暂存区里该文件的旧快照

最终状态:

  • 暂存区:a.txt = 222
  • 工作区:a.txt = 222
    两边又保持一致

核心结论

  1. 多次对同一个文件执行 git add:后一次add会覆盖暂存区内该文件之前的版本,暂存区永远只留存该文件最后一次add时的内容;
  2. 只要没 git commit,暂存区内容随时可以被新的 add 覆盖、清空;
  3. 暂存区不会自动跟随工作区改动,必须手动add才会更新。

常用查看命令

bash 复制代码
# 查看工作区和暂存区差异
git diff
# 查看暂存区和上次commit的差异
git diff --cached

延伸场景

如果你先后修改了两个不同文件:

改文件1 → add;改文件2 → add

暂存区会同时包含文件1+文件2两个文件的最新快照,互不覆盖。

相关推荐
挖掘狂人2 天前
Git 从 0 到 1:用一个小项目走完 add / commit / reset / merge / rebase / push
git·后端·github
codigger2 天前
Git 三区域模型:把 add、commit、reset、merge 一次讲透
git·github·编程·编程语言
水饺编程2 天前
第1章:开发环境搭建,在 Windows 中安装 Git
linux·c语言·汇编·git·ubuntu
idanzk2 天前
Git 推送 GitHub 报 SSL_READ /src refspec main 不匹配 完整踩坑记录
git·github·ssl
星恒随风2 天前
Linux开发工具详解(二):Git版本控制、GitHub协作与GDB调试实战
linux·笔记·git·学习·github
寺中人3 天前
Xshell 完全入门指南:从安装到实战,远程连接+文件传输+会话管理全拆解
git·ssh·github·php·远程连接·xshell·运维工具
酬谢神明则必安3 天前
git学习记录01
linux·git·学习
lingchen19063 天前
版本控制 Git源代码项目管理
git
虫无涯3 天前
Coverity 如何结合 GJB8114-2013使用?
git·单元测试·嵌入式测试·coverity·静态扫描
喵本喵叁肆3 天前
Git 深度解读:从对象模型到分支指针,把版本控制的内核讲透
git