使用git add 跟踪新文件和将文件加入索引中
1 git add概要
git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
[--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]
[--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize]
[--chmod=(+|-)x] [--pathspec-from-file=<file> [--pathspec-file-nul]]
[--] [<pathspec>...]
该命令用于更新工作树中索引,以便为下一次提交准备阶段性内容。它通过将现有路径的当前内容作为一个整体添加,但通过一些选项,也可以用于只添加部分工作树中的更改内容,或者删除工作树中不存在的路径。
"索引"保存了工作树的快照,而这个快照将作为下一次提交的内容。因此在运行commit
之前,必须使用add
向索引中添加任何新的文件和修改过的文件。
默认情况下,git add
不会添加任何被忽略的文件。如果命令中指定了任何忽略文件,git add
将会失败,并显示被忽略的文件。可以使用-f
强行添加被忽略的文件。
[<pathspec>...]
需要被添加到索引的文件,可以是文件夹,文件,正则匹配等。[-n, --dry-run]
不会真正执行这个命令,只是显示执行这个命令会发生什么。[-v, --verbose]
冗余打印[-f, --force]
强制添加文件到索引中,比如添加被忽略的文件。[-i, --interactive]
以交互式的方式添加修改的文件到索引中,这个命令会在执行后启动一个交互式的命令行用于在命令行选择执行的操作。具体交互中每个命令可以输出help来查看用法,比较简单,不详细介绍。[-p, --patch]
类似于交互式选项中的patch
命令,只是绕过了交互式命令的菜单选项直接执行命令,可以有选择性的选择工作树中大块patch并添加到索引中。[-e, --edit]
会在编辑器中打开diff和索引,以补丁的形式呈现给用户,用户自行编辑文件来修改哪些需要添加到索引,这个选项会提供很灵活的编辑方式,设置可以编辑某一个行,不建议使用:
[-u, --update]
自动的添加已在Git存储库中管理起来的文件到索引中,但不会自动的添加新文件到索引。[-A, --all, --no-ignore-removal]
不仅添加<pathspec>
指定文件到索引中还会更新其他被修改的在存储库中的文件到索引中。[--no-all, --ignore-removal]
为了兼容旧版Git的选项,不做描述[-N, --intent-to-add]
将为跟踪的文件以空文件的形式添加到索引中,这个命令的主要作用是git diff
不会将未跟踪的文件加入比较,使用此命令可以将未跟踪的文件以空文件形式加入索引,以便可以diff
可以查看具体的修改:
[--refresh]
不会添加文件到索引,只在索引中刷新他们的stat()信息。[--ignore-errors]
如果一些文件由于索引错误而无法添加,请不要中止操作,而是继续添加其他文件。[--ignore-missing]
这个选项只能和--dry-run
一起使用。通过使用这个选项,用户可以检查给定的文件是否会被忽略,而不管它们是否已经出现在工作树中。[--no-warn-embedded-repo]
默认情况下,当没有使用git submoudle add
将子模块加入子模块索引中而是添加到工作树索引中时会发出警告,这个选项抑制了此警告。[--renormalize]
这个选项对索引被跟踪对象应用clean
命令,将他们强制再次重新添加到索引中,这个在更改core.autocrlf
配置变量后很有用,以便可以纠正crlf/lf
行结尾文件。该选项就像-u
选项。-chmod=(+|-)x
修改添加文件的可执行位,可执行位只在索引中更改,磁盘上的文件不会被改变。[--pathspec-from-file=<file>]
需要添加到索引的文件由文件<file>
指定而不是命令行参数。[--pathspec-file-nul]
只对--pathspec-from-file=<file>
选项有意义,意味着文件中的元素以NUL字符分隔。[--]
分隔符,以便区分选项和参数。