git add说明文档

tech2024-07-03  65

NAME

git-add - Add file contents to the index,增加文件内容到暂存区

SYNOPSIS

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>...]

OPTIONS

<pathspec>...: 要添加内容的文件路径。使用文件通配符(例如:*.c)可以添加所有匹配的文件; 还可以给出目录,来更新目录下的改动。

请注意,旧版的Git会忽略已删除的文件。 如果要添加修改的文件或新文件,而忽略已删除的文件,请使用--no-all选项。

-n, --dry-run: Don’t actually add the file(s), just show if they exist and/or will be ignored. 不要实际添加文件,仅仅是显示他们是否存在,或者是否会被忽略。 -v, --verbose: 打印详细信息 -f, --force: Allow adding otherwise ignored files.允许添加其他被忽略的文件。 -i, --interactive: 以交互模式增加文件内容到暂存区,可以提供可选的路径参数,以将操作限制为工作树的子集。 -p, --patch: 以交互模式运行,在暂存区和工作区之间选择补丁块并将其添加到暂存区。这使用户有机会在将修改的内容添加到暂存区之前检查文件修改内容。 -e, --edit: 在编辑器中打开差异与索引,然后让用户对其进行编辑。 关闭编辑器后,调整大块头并将修补程序应用于索引。 此选项的目的是选择要应用的补丁程序的行,甚至修改要暂存的行的内容。 与使用交互式大块选择器相比,这可以更快,更灵活。 但是,很容易混淆自己并创建不适用于索引的补丁 -u, --update: 表示将修改的文件和删除的文件添加到暂存区,不包括新增加的文件。没有指定文件时,则将更新整个工作树中所有跟踪的文件(旧版本的Git则是更新当前目录以及其子目录) -A, --all, --no-ignore-removal: 表示除了<pathspec> 指定的文件加入暂存区,还会将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区。 如果在使用该选项时未给出<pathspec>,则将更新整个工作树中的所有文件(旧版本的Git用于将更新限制为当前目录及其子目录) --no-all, --ignore-removal: 添加新文件与修改的文件到暂存区,忽略从工作区删除的文件。不使用<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。 --chmod=(+|-)x: 覆盖添加文件的可执行位。 可执行位仅在暂存区中更改,磁盘上的文件保持不变。 --: 此选项可用于将命令行选项与文件列表分开(当文件名可能误认为命令行选项时很有用)。

EXAMPLES

从文档目录及其子目录下的所有* .txt文件添加内容:

$ git add Documentation/\*.txt

经shell解析后变为git add Documentation/*.txt,这使命令可以包含Documentation /目录的子目录中的文件。

从git-*.sh脚本添加内容:

git add git-*.sh

经shell解析后变为git add git-foo.sh git-test.sh..., 所以是不会检索子目录的git-*.sh

EDITING PATCHES

添加的内容 添加的内容以“ +”开头的行表示。您可以删除它们以防止暂存。 删除的内容 删除的内容以“-”开头的行表示。您可以通过将“-”转换为“ ”(空格)来防止将其删除。 修改的内容 通过将“-”行转换为“ ”,并删除“+”行,可以防止临时进行修改。请注意,只修改其中一个可能会给索引带来混乱的更改。 删除未改动的内容 索引和工作树之间没有区别的内容可能会显示在上下文行中,以“ ”(空格)开头。您可以通过将空格转换为“-”来暂存要删除的上下文行。生成的工作树文件将重新添加内容。 修改现有的内容 可以通过暂存上下文行(通过将“ ”转换为“-”)以进行删除来修改上下文行,并在其中添加新内容的“+”行。类似地,可以修改“+”行以进行现有内容的添加或修改。 新的内容 您还可以添加补丁中不存在的新内容。只需添加新行,每行以“+”开头。

还有一些操作应完全避免,因为它们会使补丁无法应用:

添加上下文(“ ”)行或添加删除(“-”)行(除了使用+来添加行,不应该有其他方式的添加行,导致内容不一致)删除上下文行或删除标记为删除的行(除了删除使用+的行,不应该其他方式删除行,会导致内容不一致)修改上下文或删除行的内容(由于行内容不一致,会导致无法找到对应行,补丁失败)

参考

https://git-scm.com/docs/git-add/zh_HANS-CN

最新回复(0)