add
TIP
使用git add
时,可能会遇到一些潜在的问题,例如意外添加了不想提交的文件,或者忘记添加应该包含在提交中的文件。为了防止这些问题,在运行git add
之前,应该使用git status
命令检查哪些文件尚未暂存以进行提交。此外,您可以使用“
git-diff”
命令来查看当前版本和即将提交的版本之间的差异。如果您在使用git add
时确实犯了错误,可以使用git reset
命令删除您添加的更改。
将内容从工作目录添加到暂存区(或称为索引(index)区),以备下次提交
语法
- git add <dir/file>
实例
添加指定文件到暂存区
- git add [file1] [file2] ...
添加指定目录到暂存区,包括子目录
- git add [dir]
添加当前目录的所有文件到暂存区
- git add .
添加每个变化前,都会要求确认,对于同一个文件的多处变化,可以实现分次提交
- git add -p
从 Documentation
目录及其子目录下的所有 *.txt
文件添加内容
- git add Documentation/\*.txt
所有 git-*.sh
脚本中添加内容
- git add git-*.sh
选项
- <pathspec>…
-
要添加内容的文件。可以指定Fileglob(例如
*.c
)来添加所有匹配的文件 -
要添加修改的文件或新文件,但忽略已删除的文件,请使用
--no-all
选项。 - -n,--dry-run
-
实际上不要添加文件,只是显示它们是否存在和/或将被忽略。
- -v,--verbose
-
Be verbose
- -f,--force
-
允许添加其他忽略的文件。
- --sparse
-
允许更新稀疏结帐锥之外的索引条目
- -i,--interactive
-
以交互方式将工作树中的修改内容添加到索引中
- -p,--patch
-
在索引和工作树之间交互式地选择补丁块,并将其添加到索引中。这让用户有机会在添加修改内容到索引之前查看其差异。
-
这有效地运行
add --interactive
,但绕过初始命令菜单并直接跳转到patch
子命令 - -e,--edit
-
在编辑器中打开diff与index,让用户编辑。关闭编辑器后,调整hunk头,并将补丁应用到索引上。
- -u,--update
-
在索引已经具有与
<pathspec>
匹配的条目的地方更新索引。这会删除和修改索引条目以匹配工作树,但不会添加任何新文件。 -
如果在使用
-u
选项时未给出<pathspec>
,则会更新整个工作树中的所有跟踪文件(旧版本的Git用于将更新限制为当前目录及其子目录)。 - -A,--all,--no-ignore-removal
-
不仅在工作树具有与
<pathspec>
匹配的文件的地方,而且在索引已经具有条目的地方,更新索引。这将添加,修改和删除索引条目以匹配工作树。 -
如果在使用
-A
选项时未给出<pathspec>
,则会更新整个工作树中的所有文件(Git的旧版本用于将更新限制为当前目录及其子目录)。 - --no-all,--ignore-removal
-
通过添加索引未知的新文件和在工作树中修改的文件来更新索引,但忽略已从工作树中删除的文件。当不使用
时,此选项为no-op。 -
这个选项主要是为了帮助习惯了旧版本 Git 的用户,他们的
git add <pathspec>...
是git add --no-all <pathspec>...
的同义词,即忽略删除的文件 - -N,--intent-to-add
-
仅记录以下事实:以后将添加路径。路径的条目放置在索引中,没有内容。除其他功能外,这对于使用
git diff
显示此类文件的未暂存内容,并使用git commit -a
提交它们很有用。 - --refresh
-
不要添加文件,而只是刷新它们在索引中的stat()信息。
- --ignore-errors
-
如果由于索引错误而无法添加某些文件,请不要中止该操作,而要继续添加其他文件。该命令仍将以非零状态退出。可以将配置变量
add.ignoreErrors
设置为true
,以使其成为默认行为。 - --ignore-missing
-
这个选项只能和
--dry-run一
起使用。通过使用这个选项,用户可以检查是否会忽略任何给定的文件,无论它们是否已经存在于工作树中。 - --no-warn-embedded-repo
-
默认情况下,当将嵌入式存储库到索引而不使用
git submodule add
在 .gitmodules 中创建条目时, git add 将发出警告。此选项将禁止显示警告(例如,如果您正在手动对子模块执行操作)。 - --renormalize
-
对所有跟踪的文件重新应用“清理”过程,以强制将它们再次添加到索引中。
core.autocrlf
配置或 text 属性后很有用,以便更正添加了错误 CRLF/LF 行结尾的文件。此选项暗示-u
。单独的 CR 字符未被触及,因此当 CRLF 清除为 LF 时,CRCRLF 序列仅部分清除为 CRLF。 - --chmod=(+|-)x
-
覆盖新增文件的可执行位。可执行位只在索引中改变,磁盘上的文件保持不变。
- --pathspec-from-file=<file>
-
Pathspec在
<file>
中而不是命令行args中传递。 - --pathspec-file-nul
-
仅对
--pathspec-from-file
有意义。Pathspec元素用NUL字符分隔,所有其他字符按字面意义使用(包括换行符和引号)。 - --
-
这个选项可以用来将命令行选项从文件列表中分离出来,(当文件名可能被误认为是命令行选项时很有用)。