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

相关推荐
LannyChung11 小时前
PowerShell 下 git log 中文乱码的完整排查与解决
windows·git
import_random11 小时前
[git]本地main,origin/main,远程main(关系2)
git
golang学习记11 小时前
Zed Git重大更新:目录级对比支持分栏Diff
git·vscode·zed
阿俊-全栈开发16 小时前
LikeShop 单商户高级版二开项目的 Git 分支管理与版本发布规范
git·likeshop·likeshop开源商城·likeshop多商户
努力弹琴的大风天17 小时前
TortoiseGit 仓库不显示绿色对号解决方案
git·tortoisegit·图标显示
我不会插花弄玉19 小时前
GitHub实操【由浅入深-Git】
git·github
说实话起个名字真难啊20 小时前
Git常用小问题笔记
笔记·git·elasticsearch
橙露1 天前
git简明教程以及资源分享
大数据·git
codigger2 天前
别再靠"最终版-改"活下去了:一篇讲透 Git 与 GitHub
git·程序员·github·编程·控制版本
JustNow_Man2 天前
【Harness】本地文本向量化搜索解决方案--qmd
git·python·算法