多次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两个文件的最新快照,互不覆盖。

相关推荐
CSDN_RTKLIB2 小时前
git push -u
git
xiaoxiang96094 小时前
Git 分支同步实战:`merge -X theirs` 与完全合并方案
数据库·git·elasticsearch
李可以量化5 小时前
Redis Client 从了解到精通(二)下:String 类型进阶操作全解
redis·git·python·量化交易·qmt
wy3136228215 小时前
Git——ignore让项目的 target 目录真正被忽略(忽略其他文件也是同样的道理)
开发语言·git
deli0070077 小时前
正则表达式可视化测试工具:输入即匹配,高亮一目了然
git·测试工具·正则表达式
爱莉希雅&&&7 小时前
Git 版本控制完整学习笔记
笔记·git·学习
CSDN_RTKLIB9 小时前
Git 修改绑定远程仓库
git
青春易逝丶9 小时前
Git相关
git