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

相关推荐
ShineWinsu15 小时前
对于Git:远程操作的超详细保姆级解析
linux·git·gitee·github·远程仓库·分布式版本控制系统·远程操作
梦帮科技15 小时前
从 Guest 到 Platinum:Prompt 配额、API Key 与访问控制的安全闭环
javascript·git·架构·node.js·reactjs·html5·visual studio
zho_uzhou1 天前
Git入门概念
git
爱奥尼欧2 天前
【Git】远程分支删了本地还在、两个分支历史不相干?两招故障排解
开发语言·git
Java后端的Ai之路2 天前
Git冲突完整排查与实战:本地修改覆盖报错到成功推送全流程复盘
开发语言·人工智能·git·python·pop
一个心烑2 天前
配置项目git的 SSL 证书
git·网络协议·ssl
IT从业者张某某2 天前
【鸿蒙PC命令行适配】GitUI 移植的工程实践:双 Git 引擎(libgit2/gitoxide)的鸿蒙适配之路
git·华为·harmonyos
xinjia_ctrl2 天前
暑假实习总结
git·后端·spring·maven·intellij-idea
Molesidy2 天前
【Git】分别给出添加到Keil工程和IAR工程中的gitnore文件以便不跟踪编译文件的git记录
git·vscode·插件
颜颜yan_3 天前
Git Cola 鸿蒙 PC 版适配全记录:从 Qt 桌面工具到 ArkTS 原生应用
git·qt·harmonyos