Git:add 命令

Oct 25, 2021

目录


ref: https://git-scm.com/docs/git-add


命令


1git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
2      [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]
3      [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize]
4      [--chmod=(+|-)x] [--pathspec-from-file=<file> [--pathspec-file-nul]]
5      [--] [<pathspec>…​]

git-add - Add file contents to the index


描述


该命令使用当前工作目录中的内容更新索引,为下一次提交做准备。 通常情况下,它会将指定路径上的文件的整个内容添加到索引,但是也提供了一些选项可以用来只添加部分内容到索引中,也用来移除不在存在的文件路径。

“索引(index)” 保存了一份当前工作目录中文件内容的快照(snapshot), 这个快照作为下一次提交的内容。 因此,当你修改(新增文件,或者修改现有文件)了工作目录中的文件内容,在下一次提交之前,你应该使用 add 命令将该修改添加到索引(index)

在任何提交之前,这个命令可以执行任意多次。 这个命令只会将指定的文件内容(执行 add 命令时的文件内容)添加到索引。 如果你在执行了添加操作之后,又对文件做了修改,并且你想让这些修改包含在下一次提交中, 那么你需要再次执行 git add 命令将修改后的文件重新添加到索引中。

可以使用 git status 命令获取那些已经暂存的文件(staged)。

默认情况下,git add 不会添加忽略的文件(ignored files)到索引中。 如果给添加命令明确的指定了忽略的文件,git add 命令会失败,失败消息中会包含忽略文件的列表。 使用 -f 选项可以强制添加忽略的文件到索引中。


选项


  • <pathspec>

需要添加到索引中的文件。

可以使用 * 来匹配文件。

还可以给出一个目录前缀(例如, dir 添加 dir/file1dir/file2),以更新索引,使其与目录的当前状态整体匹配。 比如,你使用工作目录的路径前缀 dir, 那么索引中会记录 被修改的dir/file1,新创建的文件 dir/file2, 还有被删除掉的 dir/file3

  • -n, --dry-run

不要添加文件到索引,只显示它们是否存在和/或将被忽略。

  • -v, --verbose

输出更详细的回显消息

  • -f, --force

允许添加被忽略的文件。

  • -i, --interactive

以交互方式将工作目录中修改的内容添加到索引中。

  • -p, --patch

交互式选择索引和工作目录之间的不同,并将它们添加到索引中。 这让用户有机会在向索引添加修改内容之前查看差异。

  • -e, --edit

Open the diff vs. the index in an editor and let the user edit it. After the editor was closed, adjust the hunk headers and apply the patch to the index.

The intent of this option is to pick and choose lines of the patch to apply, or even to modify the contents of lines to be staged. This can be quicker and more flexible than using the interactive hunk selector. However, it is easy to confuse oneself and create a patch that does not apply to the index. See EDITING PATCHES below.

  • -u, --update

只在已经有匹配 <pathspec> 的地方更新索引。 这将删除并修改索引以匹配工作目录,但不添加新文件。

如果没有指定 <pathspec> 时使用 -u 选项,工作目录中所有被跟踪的文件都会被更新。

  • -A, --all, --no-ignore-removal

更新索引,如果:

  1. 工作目录中包含文件匹配指定的 <pathspec>, 或者
  2. 索引中已经包含了响应的条目

这将添加、修改和删除索引条目以匹配工作目录。

如果没有指定 <pathspec> 时使用 -A 选项,工作目录中所有文件都会被更新。

  • -no-all, --ignore-removal

Update the index by adding new files that are unknown to the index and files modified in the working tree, but ignore files that have been removed from the working tree. This option is a no-op when no <pathspec> is used.

This option is primarily to help users who are used to older versions of Git, whose “git add <pathspec>…” was a synonym for “git add –no-all <pathspec>…”, i.e. ignored removed files.

  • -N, --intent-to-add

只记录路径将在稍后添加到索引的事实。该路径的条目被放置在索引中,但是不记录任何内容。

  • --refresh

不要添加文件,只在索引中更新它们的 stat() 信息。

  • --ignore-errors

如果一些文件由于索引错误而无法添加,不要中止操作, 忽略这些错误,继续添加其他文件。 但是这个命令应该返回非零的错误码。

  • --ignore-missing

搭配 --dry-run 使用。 通过使用这个选项,用户可以检查给定的文件是否会被忽略,无论它们是否已经出现在工作树中。

  • --no-warn-embeded-repo

默认情况下,git add 会产生警告当不适用 git submodule add 来将一个嵌入的仓库添加到索引中。 这个选项用来消除这样的警告。

  • --renormalize

Apply the “clean” process freshly to all tracked files to forcibly add them again to the index.

这个指定默认会使用 -u 选项。

  • --chmod=(+|-)x

修改添加文件的可执行标志位。 仅仅更新索引,不会改变工作目录中的文件。

  • --pathspec-from-file=<file>

  • --pathspec-file-nul

  • --


例子


  • Documentation 目录以及子目录中所有 *.txt 文件添加到索引
1git add Documentation/\*.txt
  • 将所有匹配 git-*.sh 的脚本文件添加到索引
1git add git-*.sh

END!!!


Tags