返回知识库

版本协作 · 版本协作

GitGit

三个区加一个不可变快照:工作区是正在改的文件,暂存区是下次提交的候选,历史是一串带 SHA 的提交对象;add 跨工作区到暂存,commit 跨暂存到历史。

先认出这块 Source Control,再把文件片送进历史

下面就是编辑器里那块三区面板。默认 theme.ts 还在工作区;空说明会把失败写在暂存片上;写好说明后,历史里才会多出一枚带 SHA 的快照。

第 0 步先打开:终端跑 git status,或点编辑器左侧 Source Control。下面就是那块三区面板。

Source Control1 处未提交
工作区 · 正在改

src/theme.tsM · 未进暂存+ colorError: "#c0183a"

暂存区 · 下次提交候选

空。add 过的改动才会出现在这里。

历史 · 不可变快照

9f2a1cHEAD登录失败显示错误提示

还在工作区

磁盘上改了,历史里还没有。下一步:add 进暂存,再写说明 commit。

原因:保存只写工作区。下一步:把文件 add 进暂存,或看空说明会怎样失败。

知识点:三个区加一枚快照

文件片刚走过的路,这里只给命名。

  • 工作区是磁盘上正在改的文件,保存不会自动进历史。
  • 暂存区是下次提交的候选;git add 决定这次边界。
  • 历史是一串带 SHA 的提交对象;git commit 才把候选冻成快照。
  • 提交一旦落地不可改,HEAD 会指到新对象。

什么时候用、怎么用

Git 管历史,不管编辑器保存。

  • 信号:改完想留底、回看或给队友看。
  • 最短路径:git status 看在哪区 → add 控制边界 → diff --staged 复核 → commit 落历史。
  • 不适用:密钥、.env、构建产物写进 .gitignore;草稿用 stash。

正反例:同一次登录修复,提交边界不同

只改暂存范围,历史完全不一样。

正例只 add login.tsx

历史多一个可读、可独立回退的提交。review 和 revert 都轻松。

反例连 .env 和格式化一起 add

历史变成「杂项修改」,回退要全选全弃,密钥还可能泄露。

快速自测

你刚改了 login.tsx 和 theme.css,只想先把登录修复发出去。哪种做法把边界画对了?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。