git-add命令


git add 命令

简介

git add 是 Git 中用于将文件添加到暂存区的命令。它将工作区的更改标记为准备提交的状态。这是 Git 工作流中的关键步骤之一。

基本概念

Git 的三个区域

  1. 工作区(Working Directory):当前正在编辑的文件
  2. 暂存区(Staging Area / Index):已使用 git add 添加的文件
  3. 仓库(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

查看帮助文档

1
$ git add --help

常用选项

选项 说明
-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
# 强制添加被 .gitignore 忽略的文件
$ 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

# 或使用 -A 添加所有更改(包括删除)
$ git add -A

场景6:撤销暂存

1
2
3
4
5
# 如果误添加了文件,可以撤销
$ git reset HEAD file.txt

# 或使用 git restore(Git 2.23+)
$ 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
$ git restore --staged file.txt

问题2:想添加部分更改

解决方案

1
2
3
4
# 使用交互式模式
$ git add -p file.txt

# 选择要添加的更改块

问题3:添加了被忽略的文件

解决方案

1
2
3
4
5
6
7
# 检查 .gitignore
$ cat .gitignore

# 如果需要添加,使用 -f
$ git add -f file.txt

# 或更新 .gitignore

问题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
# 配置 .gitignore 避免添加不需要的文件
$ 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 是将更改从工作区移动到暂存区的关键命令:

  1. 基本用法git add <文件> 添加文件到暂存区
  2. 批量添加git add .git add -A 添加所有更改
  3. 交互式添加git add -p 选择性添加更改
  4. 预览模式git add -n 预览将要添加的文件

关键要点

  • ✅ 使用交互式模式选择性添加
  • ✅ 提交前检查暂存区内容
  • ✅ 使用 .gitignore 避免添加不需要的文件
  • ✅ 相关更改一起添加和提交

文章作者: djaigo
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 djaigo !
评论
  目录