添加文件

在 Git 的世界里,文件的修改并不会自动被记录。这就好比你在准备一份演讲稿,你可以在纸上随意涂改(工作区的修改),但只有当你把确定的内容誊写到正式的稿件上(暂存区),演讲才算确定了内容。

git add 命令就是那个“誊写”的过程。它将工作区的文件修改放入暂存区,告诉 Git:“请关注这些文件的变化,我稍后要把它们存入版本库。”

跟踪新文件

当你新建了一个文件(例如 README.md)时,它是处于“未跟踪”状态的。你需要显式地告诉 Git 开始管理它。

命令格式:

git add <文件名>

操作示例:

假设你在项目目录下新建了一个 README.md 文件:

git add README.md

执行该命令后,终端通常不会输出任何提示信息(Unix 风格:没有消息就是好消息)。此时再次使用 git status 查看,你会发现文件状态已变为 Changes to be committed(已暂存),通常显示为绿色。

暂存已修改文件

git add 不仅仅是添加新文件,它还是一个“多功能”命令。如果一个文件已经被 Git 跟踪,但你在本地修改了它,Git 会检测到差异。

此时,文件处于“未暂存”状态。你需要再次使用 git add 命令,将这次修改添加到暂存区。

# 修改了 index.html 后
git add index.html

注意:如果你修改了一个文件,执行了 git add 后又再次修改了它,你需要再次运行 git add 将最新的修改加入暂存区。Git 暂存区保存的是你执行 add 命令那一刻的文件快照。

批量添加文件

在实际开发中,我们往往一次性修改了多个文件,逐个输入文件名会非常繁琐。Git 提供了便捷的批量操作方式。

添加当前目录下所有变更:

这是最常用的命令,它会将当前目录及子目录下所有的新建、修改操作添加到暂存区。

git add .

最佳实践:建议养成使用 git add . 的习惯,但在执行前务必先执行 git status 确认一下变更内容,避免误提交临时文件或敏感信息。

添加所有已跟踪文件的修改:

如果你只想提交修改过的文件,不想添加新建的未跟踪文件(这在某些调试场景下很有用),可以使用:

git add -u

交互式添加(进阶技巧)

如果你想更精细地控制哪些修改需要暂存(例如同一个文件里有两处修改,你只想提交其中一处),可以使用交互模式:

git add -p

Git 会逐块展示修改内容,并询问你是否暂存。这在拆分大的代码改动时非常有用。

理解暂存区的意义

很多初学者会问:“为什么 Git 需要 add 和 commit 两步?直接提交所有修改不好吗?”

暂存区的设计体现了 Git 的灵活性:

  1. 精选内容:你可能同时修改了功能代码和调试日志。通过暂存区,你可以只提交功能代码,而忽略调试日志。
  2. 原子提交:你可以将不同逻辑的修改分批次提交。例如,先提交“修复Bug”的部分,再提交“优化UI”的部分,保持每一次提交的历史清晰。

小结

命令 作用
git add <file> 添加指定文件到暂存区
git add . 添加当前目录下所有变更(最常用)
git add -u 添加所有已跟踪文件的修改