git add 命令
简介
git add 是 Git 中用于将文件添加到暂存区的命令。它将工作区的更改标记为准备提交的状态。这是 Git 工作流中的关键步骤之一。
基本概念
Git 的三个区域
- 工作区(Working Directory):当前正在编辑的文件
- 暂存区(Staging Area / Index):已使用
git add 添加的文件
- 仓库(Repository):已提交的版本
git add 将文件从工作区移动到暂存区。
命令语法
1 2 3 4 5 6 7 8 9 10 11 12
| git add <文件>...
git add <目录>/
git add .
git add -p git add --patch
|
查看帮助文档
常用选项
| 选项 |
说明 |
-A, --all |
添加所有更改的文件(包括删除) |
. |
添加当前目录及子目录的所有更改 |
-u, --update |
只添加已跟踪文件的更改(不包括新文件) |
-p, --patch |
交互式选择要添加的更改 |
-i, --interactive |
交互式模式 |
-f, --force |
允许添加被忽略的文件 |
-n, --dry-run |
预览模式,不实际添加 |
-v, --verbose |
详细输出 |
--ignore-errors |
忽略错误,继续添加其他文件 |
--refresh |
刷新暂存区信息 |
基本使用
1. 添加单个文件
1 2 3 4 5
| $ git add README.md
$ git add file1.txt file2.txt file3.txt
|
2. 添加目录
1 2 3 4 5
| $ git add src/
$ git add .
|
3. 添加所有更改
1 2 3 4 5 6 7 8
| $ git add -A
$ git add --all
$ git add .
|
4. 只添加已跟踪的文件
1 2 3 4 5
| $ git add -u
$ git add --update
|
5. 交互式添加(推荐)
1 2 3 4 5
| $ git add -p
$ git add --patch
|
交互式模式会显示每个更改块,你可以选择:
y:暂存此块
n:不暂存此块
q:退出
a:暂存此块和文件中所有后续块
d:不暂存此块和文件中所有后续块
s:将块拆分成更小的块
e:手动编辑块
6. 添加被忽略的文件
1 2 3 4 5
| $ git add -f ignored-file.txt
$ git add --force ignored-file.txt
|
7. 预览模式
1 2 3 4 5
| $ git add -n .
$ git add --dry-run .
|
实际应用场景
场景1:添加新文件
1 2 3 4 5 6 7 8
| $ echo "Hello" > newfile.txt
$ git add newfile.txt
$ git status
|
场景2:添加修改的文件
1 2 3 4 5
| $ vim README.md
$ git add README.md
|
场景3:批量添加
1 2 3 4 5 6
| $ git add .
$ git add *.txt $ git add src/*.js
|
场景4:选择性添加
1 2 3 4 5
| $ git add -p
$ git add -p file.txt
|
场景5:添加删除的文件
1 2 3 4 5 6 7 8
| $ rm oldfile.txt
$ git add oldfile.txt
$ git add -A
|
场景6:撤销暂存
1 2 3 4 5
| $ git reset HEAD file.txt
$ git restore --staged file.txt
|
与其他命令的组合
git add + git status
1 2 3 4 5 6 7 8
| $ git status
$ git add file.txt
$ git status
|
git add + git commit
1 2 3 4 5
| $ git add .
$ git commit -m "Add new feature"
|
git add + git diff
1 2 3 4 5 6 7 8
| $ git diff
$ git add file.txt
$ git diff --cached
|
常见问题和解决方案
问题1:添加了不想提交的文件
解决方案:
1 2 3 4 5
| $ git reset HEAD file.txt
$ git restore --staged file.txt
|
问题2:想添加部分更改
解决方案:
1 2 3 4
| $ git add -p file.txt
|
问题3:添加了被忽略的文件
解决方案:
1 2 3 4 5 6 7
| $ cat .gitignore
$ git add -f file.txt
|
问题4:添加了太多文件
解决方案:
1 2 3 4 5 6
| $ git add -i
$ git add file1.txt $ git add file2.txt
|
最佳实践
1. 使用交互式模式
1 2 3 4 5
| $ git add -p
$ git add .
|
2. 提交前检查
1 2 3
| $ git status $ git diff --cached
|
3. 使用 .gitignore
1 2 3
| $ echo "*.log" >> .gitignore $ echo "node_modules/" >> .gitignore
|
4. 分阶段添加
1 2 3 4 5 6
| $ git add src/ $ git commit -m "Update source code"
$ git add docs/ $ git commit -m "Update documentation"
|
总结
git add 是将更改从工作区移动到暂存区的关键命令:
- 基本用法:
git add <文件> 添加文件到暂存区
- 批量添加:
git add . 或 git add -A 添加所有更改
- 交互式添加:
git add -p 选择性添加更改
- 预览模式:
git add -n 预览将要添加的文件
关键要点:
- ✅ 使用交互式模式选择性添加
- ✅ 提交前检查暂存区内容
- ✅ 使用 .gitignore 避免添加不需要的文件
- ✅ 相关更改一起添加和提交