在 Git 中,暂存区(也被称为“索引”)是一个中间空间,用于在提交之前收集更改。我们可以把它想象成一个草稿板:在这里,我们可以整理并审查希望在下次提交中包含哪些更改。
暂存区允许我们:
- 有选择地选择要提交的更改。
- 将大型更改分解为更小的、逻辑清晰的提交。
- 在将工作最终确定到仓库之前进行审查。
- 工作目录:包含我们的本地文件和更改(未跟踪或已修改)。
- git add:将选定的更改从工作目录移动到暂存区以进行准备。
- 暂存区:保存准备好提交的文件(也称为索引)。
- git commit:将暂存的更改作为快照保存到仓库。
- 仓库:存储已提交更改的完整历史记录(本地 Git 仓库)。
基本暂存命令
1. 暂存所有更改
要暂存工作目录中所有已修改的文件,我们可以使用:
git add .
或者,我们可以使用:
git add -A
这会添加所有更改,包括新建、修改和删除的文件。
2. 暂存文件中的更改
假设我们编辑了 a.txt 并运行:
git status
- 显示为 绿色 的更改表示文件已暂存但尚未提交。
- 显示为 红色 的更改尚未暂存。
示例:
- 我们在 INLINECODE17fe4b16 中写入 INLINECODE05cb5c38 并使用
git add .将其暂存。 - 然后我们添加了 INLINECODE6d8008e6 但没有暂存它。运行 INLINECODE1c2a663b 会显示
"bhailogs"为红色,表示存在未暂存的更改。
3. 取消暂存文件
要将文件从暂存区移除,我们可以使用:
git reset file_name
示例:
- 我们暂存了
b.txt但现在想取消暂存:
git reset b.txt
该文件将保留在我们的工作目录中,但从暂存区中移除。
3. 按块暂存更改
有时我们只想暂存文件的一部分。Git 允许我们进行 块级暂存:
git add -p
这会为文件中的每个 块(hunk,即更改块) 打开一个交互式提示:
执行的操作
—
暂存此块以用于下次提交
不暂存此块用于下次提交
退出;不暂存此块或任何后续的块
暂存此块和文件中所有后面的块
不暂存此块或文件中任何后面的块
手动编辑当前块
打印块帮助信息当我们只想提交特定的更改而将其他更改保留为未暂存状态时,这非常有用。
4. 交互式添加
Git 还提供了一个交互式暂存界面:
git add -i
该界面将输出分解为 已暂存 和 未暂存 的更改。我们可以执行各种操作:
- status:显示文件的当前状态。
- update:暂存已修改的文件。
- revert:将更改还原回 HEAD。
- add untracked:暂存未跟踪的文件。
- patch:以交互方式暂存单个块。
- diff:显示要提交的更改。
- quit:退出交互式界面。
- help:显示交互式命令的帮助。
特定暂存场景
1. 暂存单个文件
git add file_name
示例:
git add b.txt
2. 暂存已删除的文件
- 要从 Git 中永久删除文件:
git rm -f file_name
要从 Git 中删除文件 而不从磁盘上删除它:
git rm --cached file_name
示例:
- 我们创建了 INLINECODE08ae64c4,将其暂存,然后使用 INLINECODE989f62d4 将其移除。该文件将从暂存区移除,但在我们的工作目录中仍作为未跟踪文件保留。我们可以再次使用以下命令将其暂存:
git add r.txt