forked from git/git-scm.com
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Updated via the `update-translated-manual-pages.yml` GitHub workflow.
- Loading branch information
dscho
committed
May 11, 2024
1 parent
6628510
commit 5409deb
Showing
59 changed files
with
17,695 additions
and
240 deletions.
There are no files selected for viewing
1,612 changes: 1,612 additions & 0 deletions
1,612
_generated-asciidoc/02602a3a586c35b73a1fb4a194b337ea27673f33
Large diffs are not rendered by default.
Oops, something went wrong.
1,160 changes: 1,160 additions & 0 deletions
1,160
_generated-asciidoc/02d8e736c2194fbcb51434bcfa1d04bbd1582e04
Large diffs are not rendered by default.
Oops, something went wrong.
299 changes: 299 additions & 0 deletions
299
_generated-asciidoc/0676a61b6b09ad634964bd98d03bfbe028058e6e
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,299 @@ | ||
git-add(1) | ||
========== | ||
|
||
名称 | ||
-- | ||
git-add - 添加文件内容到索引 | ||
|
||
概述 | ||
-- | ||
[verse] | ||
'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p] | ||
[--edit | -e] [--[no-]all | -A | --[no-]ignore-removal | [--update | -u]] [--sparse] | ||
[--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize] | ||
[--chmod=(+|-)x] [--pathspec-from-file=<文件> [--pathspec-file-nul]] | ||
[--] [<路径规范>...] | ||
|
||
描述 | ||
-- | ||
该命令使用工作区的内容来更新索引,为下一次提交准备暂存的内容。通常情况下会添加当前目录的所有内容到索引,但是通过某些选项,它也可以用于仅添加对工作树文件所做的部分更改,或删除工作树中不存在的路径。 | ||
|
||
索引区中储存着一份工作区的快照,在下次提交时这份快照会被保存到 Git 仓库中。因此在工作区做过修改后以及在运行下一次提交命令前,你必须通过 `add` 命令来添加新创建的文件或者保存新的改动到索引中。 | ||
|
||
提交前可以多次执行此命令。它仅在运行add命令时添加指定文件的内容;如果要在下一次提交中包含后续更改,则必须再次运行`git add`将新内容添加到索引中。 | ||
|
||
`git status` 命令可用于获取摘要,说明哪些变化的文件已暂存,准备下一次提交。 | ||
|
||
`git add` 命令默认不会添加被忽略的文件。如果在命令行上明确指定了任何被忽略的文件,则 `git add` 会失败,并显示被忽略文件的列表。由目录递归或 Git 执行的文件名通配符(在 shell 之前引用的通配符)所涉及的忽略文件将被静默忽略。 'git add' 命令可用于通过 `-f` 选项(force)强制添加忽略的文件。 | ||
|
||
请参阅 linkgit:git-commit[1] 了解将内容添加到提交的其他替代方法。 | ||
|
||
|
||
选项 | ||
-- | ||
<路径规范>...:: | ||
要从中添加内容的文件。可以使用文件通配符(例如 `*.c`)来添加所有匹配的文件。此外,还可以提供一个前导目录名(例如,指定 `dir` 以添加 `dir/file1` 和 `dir/file2`)来更新索引,使其与整个目录的当前状态相匹配(例如,指定 `dir` 不仅会记录在工作树中修改的文件 `dir/file1`,还会记录在工作树中添加的文件 `dir/file2`,还有从工作树中删除的文件 `dir/file3`)。请注意,旧版本的 Git 会忽略已删除的文件;如果要添加已修改的文件或新文件,但忽略已删除的文件,请使用 `--no-all` 选项。 | ||
+ | ||
有关 <指定路径> 格式的更多细节,请参考 linkgit:gitglossary[7]。 | ||
|
||
-n:: | ||
--dry-run:: | ||
实际上不添加文件,仅展示文件是否存在或是否忽略。 | ||
|
||
-v:: | ||
--verbose:: | ||
详细日志。 | ||
|
||
-f:: | ||
--force:: | ||
允许添加已被忽略的文件。 | ||
|
||
--sparse:: | ||
允许更新稀疏检出 cone 之外的索引条目。 通常,`git add` 拒绝更新其路径不适合稀疏检出 cone 的索引条目,因为这些文件可能会在没有警告的情况下从工作区中删除。有关更多详细信息,请参阅链接 linkgit:git-sparse-checkout[1]。 | ||
|
||
-i:: | ||
--interactive:: | ||
以交互方式将工作目录树中的修改内容添加到索引。可以提供可选的路径参数,以将操作限制为工作目录树的子集。有关详细信息,请参见 ''交互模式''。 | ||
|
||
-p:: | ||
--patch:: | ||
交互地在索引和工作目录之间选择补丁块并将它们添加到索引中。这让用户有机会在将修改后的内容添加到索引之前查看差异。 | ||
+ | ||
参见这可以有效地运行 `add --interactive`,但是会绕过初始命令菜单,而直接跳转到 `patch` 子命令。有关详细信息,请参见 ''交互模式''。 | ||
|
||
-e:: | ||
--edit:: | ||
在编辑器中打开与索引的差异,使用户进行编辑。关闭编辑器后,调整块补丁头并将其应用于索引。 | ||
+ | ||
此选项的目的是选择并选择要应用的补丁的行,甚至修改要暂存的行的内容。与使用交互式补丁块选择器相比,其更快,更灵活。但是,很容易混淆自己并创建不应用于索引的补丁。请参阅下面的编辑补丁。 | ||
|
||
-u:: | ||
--update:: | ||
在索引已经有与 <路径规范> 匹配项的地方更新索引。这会删除和修改索引项以匹配工作目录树,但不添加新文件。 | ||
+ | ||
如果在使用 `-u` 选项时没有 <路径规范>,则整个工作目录树中的所有跟踪文件都将更新(旧版本 Git 会限制更新当前目录及其子目录)。 | ||
|
||
-A:: | ||
--all:: | ||
--no-ignore-removal:: | ||
不仅在工作树中有与 <路径规范> 匹配的文件的地方更新索引,而且在索引中已经有一个项的地方更新索引。这将添加、修改和删除与工作目录树匹配的索引项。 | ||
+ | ||
如果在使用 `-A` 选项时没有提供 <路径规范>,则整个工作目录树中的所有文件都将更新(旧版本的 Git 会限制当前目录及其子目录的更新)。 | ||
|
||
--no-all:: | ||
--ignore-removal:: | ||
通过添加索引未知的新文件和在工作树中修改的文件以更新索引,但忽略已从工作树中删除的文件。当不使用 <路径规范> 时,此选项是必须的。 | ||
+ | ||
此选项主要用于帮助那些习惯于较旧版本 Git 的用户。旧版本中的 "Git add <路径规范>..." 是 "Git add --no-all <路径规范>..." 的同义词,即忽略已删除的文件。 | ||
|
||
-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 add` 将在向索引添加嵌入式存储库时发出警告,而不使用 `git submodule add` 在 `.gitmodules` 中创建条目。此选项将抑制警告(例如,如果手动对子模块执行操作)。 | ||
|
||
--renormalize:: | ||
对所有跟踪文件重新应用 “清除” 程序,将它们强制添加到索引中。 这在更改 `core.autocrlf` 配置或 `text` 属性后非常有用,可以纠正添加文件时错误的 CRLF/LF 行尾。 该选项意味着 `-u` 。由于 CRLF 字符不会被清除,因此 CRLF 会被清除为 LF,而 CRCRLF 序列只会被部分清除为 CRLF。 | ||
|
||
--chmod=(+|-)x:: | ||
重写添加文件的可执行位。可执行位仅在索引中更改,磁盘上的文件保持不变。 | ||
|
||
--pathspec-from-file=<file>:: | ||
Pathspec 在 `<文件>` 中传递,而不是在命令行参数中传递。如果 `<文件>` 正好是 `-`,则使用标准输入。路径规范元素由 LF 或 CR/LF 分隔。可以引用配置变量 `core.quotePath` 的路径规范元素(请参见 linkgit:git-config[1])。另请参见 `--pathspec-file-nul` 和全局 `--literal-pathspecs`。 | ||
|
||
--pathspec-file-nul:: | ||
只有在使用 `--pathspec-from-file` 选项时才有意义。指定路径元素用 NUL 字符分隔,所有其他字符都按字面意思(包括换行符和引号)表示。 | ||
|
||
\--:: | ||
此选项可用于分离命令行选项和文件列表(当文件名可能被误认为命令行选项时非常有用)。 | ||
|
||
|
||
实例 | ||
-- | ||
|
||
* 添加 `Documentation` 目录及其子目录下所有 `*.txt` 文件的内容: | ||
+ | ||
------------ | ||
$ git add Documentation/\*.txt | ||
------------ | ||
+ | ||
注意,在本例中,星号 `*` 是从 shell 中引入的;这使得该命令可以包含 `Documentation/` 的子目录中的文件。 | ||
|
||
* 从所有 git-*.sh 脚本中添加内容: | ||
+ | ||
------------ | ||
$ git add git-*.sh | ||
------------ | ||
+ | ||
因为这个示例允许 shell 扩展星号(即显式列出文件),所以它不包含 `subdir/git-foo.sh`。 | ||
|
||
交互模式 | ||
---- | ||
当命令进入交互模式时,它将显示 `status` 子命令的输出,然后进入其交互命令循环。 | ||
|
||
命令循环显示可用的子命令列表,并提示 "What now>"。通常,当提示以单个 '>' 结尾时,您只能选择给定的一个选项并键入回车,如下所示: | ||
|
||
------------ | ||
*** Commands *** | ||
1: status 2: update 3: revert 4: add untracked | ||
5: patch 6: diff 7: quit 8: help | ||
What now> 1 | ||
------------ | ||
|
||
你也可以输入 `s`、`sta` 或 `status`,只要候选项是唯一的。 | ||
|
||
主命令循环有 6 个子命令(包括帮助和退出)。 | ||
|
||
状态:: | ||
|
||
这将显示每个路径下 HEAD 和索引之间的更改(即,如果输入 `git commit`,将提交什么),以及索引和工作目录树文件之间的更改(即,在输入 `git commit` 之前,执行 `git add` 可以进一步暂存什么)。示例输出如下: | ||
+ | ||
------------ | ||
staged unstaged path | ||
1: binary nothing foo.png | ||
2: +403/-35 +1/-1 git-add--interactive.perl | ||
------------ | ||
+ | ||
它表明 foo.png 与 HEAD 有区别(但其是二进制的,因此无法显示行数),索引副本和工作目录树版本之间没有区别(如果工作目录树版本也不同,`nothing` 的位置上会显示 `binary` )。另一个文件 git add-{litdd}interactive.perl 添加了403 行,如果提交索引中的内容,则删除了 35 行,但工作目录树文件有额外修改(一次添加一次删除)。 | ||
|
||
update:: | ||
|
||
这将显示状态信息并发出 "Update>>" 提示。当提示以 '>>' 结尾时,可以进行多个选择,并用空格或逗号连接。你也可以输入范围。例如:"2-5 7,9" 将从列表中选择 2、3、4、5、7、9。如果省略一个范围中的第二个数字,则将获取所有剩余的补丁。例如:"7-" 从列表中选择 7、8、9。你可以输入 '*' 来选择全部补丁。 | ||
+ | ||
您选择的内容会用 '*' 突出显示,如下所示: | ||
+ | ||
------------ | ||
staged unstaged path | ||
1: binary nothing foo.png | ||
* 2: +403/-35 +1/-1 git-add--interactive.perl | ||
------------ | ||
+ | ||
要删除选定内容,请在输入前加上 `-`,如下所示: | ||
+ | ||
------------ | ||
Update>> -2 | ||
------------ | ||
+ | ||
进行选择后,输入空行,以便为索引中选定的路径暂存工作目录文件的内容。 | ||
|
||
还原:: | ||
|
||
它有一个与 'update' 非常相似的交互过程,所选路径的暂存信息将还原为 HEAD 版本。还原新路径将使它们不被追踪。 | ||
|
||
添加未跟踪文件:: | ||
|
||
它有一个与 'update' 和 'revert' 非常相似的交互过程,允许您向索引添加未跟踪的路径。 | ||
|
||
补丁:: | ||
|
||
这允许您从类似 'status' 命令的选择中选择一条路径。在选择路径之后,它将显示索引和工作树文件之间的差异,并询问您是否要暂存每个块的更改。您可以选择以下选项之一并输入回车: | ||
|
||
y - 暂存此区块 | ||
n - 不暂存此区块 | ||
q - 退出;不暂存包括此块在内的剩余的区块 | ||
a - 暂存此块与此文件后面所有的区块 | ||
d - 不暂存此块与此文件后面所有的 区块 | ||
g - 选择并跳转至一个区块 | ||
/ - 搜索与给定正则表达示匹配的区块 | ||
j - 暂不决定,转至下一个未决定的区块 | ||
J - 暂不决定,转至下一个区块 | ||
k - 暂不决定,转至上一个未决定的区块 | ||
K - 暂不决定,转至上一个区块 | ||
s - 将当前的区块分割成多个较小的区块 | ||
e - 手动编辑当前的区块 | ||
? - 输出帮助 | ||
+ | ||
在决定了所有块的操作后,如果有选择的区块,则会使用其来更新索引。 | ||
+ | ||
通过将配置变量 `interactive.singleKey` 设置为 `true`,在此处可以不必键入回车。 | ||
|
||
diff:: | ||
|
||
这使您可以查看要提交的内容(即,在 HEAD 和索引之间)。 | ||
|
||
|
||
编辑补丁 | ||
---- | ||
|
||
调用 `git add -e` 或从交互式块选择器中选择 `e` 命令,将在编辑器中打开一个补丁。编辑器退出后,结果将应用于索引。您可以随意对补丁进行任何更改,但是请注意,某些更改可能会导致混乱,甚至导致补丁无法使用。如果您想完全中止该操作(即不在索引中更新内容),只需删除补丁中的所有行。下面的列表描述了您可能会在补丁中看到的一些常见内容,以及对其进行哪些编辑操作才有意义。 | ||
|
||
-- | ||
添加的内容:: | ||
|
||
添加的内容以 "{plus}" 开头的行表示。您可以删除它们以防止暂存。 | ||
|
||
删除的内容:: | ||
|
||
删除的内容以 "-" 开头的行表示。您可以通过将 "-" 转换为 " "(空格)来防止将其删除。 | ||
|
||
修改的内容:: | ||
|
||
修改后的内容由 "-" 行(删除旧内容)和 "{plus}" 行(添加替换内容)表示。通过将 "-" 行转换为 " ",并删除 "{plus}" 行,可以防止临时进行修改。请注意,只修改其中一个可能会给索引带来混乱的更改。 | ||
-- | ||
|
||
还可以执行更复杂的操作。但是请注意,由于补丁仅应用于索引而不是工作目录树,因此工作树似乎会 "撤消" 索引中的更改。例如,在索引中添加一行,而该行不在 HEAD 或工作目录树。此时会暂存其以进行提交,但是该行似乎在会在工作目录树中进行还原。 | ||
|
||
避免使用这些构造,除非格外小心。 | ||
|
||
-- | ||
删除未改动的内容:: | ||
|
||
索引和工作树之间没有区别的内容可能会显示在上下文行中,以 " "(空格)开头。您可以通过将空格转换为 "-" 来暂存要删除的上下文行。生成的工作目录树文件将重新添加内容。 | ||
|
||
修改现有的内容:: | ||
|
||
也可以通过暂存上下文行(通过将 " " 转换为 "-")以进行删除来修改上下文行,并在其中添加新内容的 "{plus}" 行。类似地,可以修改 "{plus}" 行以进行现有内容的添加或修改。在所有情况下,新的修改都将在工作目录树中还原。 | ||
|
||
新的内容:: | ||
|
||
您还可以添加补丁中不存在的新内容。只需添加新行,每行以 "{plus}" 开头。添加的内容将还原到工作目录树中。 | ||
-- | ||
|
||
还有一些操作应完全避免,因为它们会使补丁无法应用: | ||
|
||
* 添加上下文(" ")行或添加删除("-")行 | ||
* 删除上下文行或删除标记为删除的行 | ||
* 修改上下文或删除行的内容 | ||
|
||
配置 | ||
-- | ||
|
||
|
||
|
||
[WARNING] | ||
==== | ||
Missing `zh_HANS-CN/includes/cmd-config-section-all.txt` | ||
|
||
See original version for this content. | ||
==== | ||
|
||
[] | ||
|
||
|
||
|
||
[WARNING] | ||
==== | ||
Missing `zh_HANS-CN/config/add.txt` | ||
|
||
See original version for this content. | ||
==== | ||
|
||
[] | ||
|
||
参见 | ||
-- | ||
linkgit:git-status[1] linkgit:git-rm[1] linkgit:git-reset[1] linkgit:git-mv[1] linkgit:git-commit[1] linkgit:git-update-index[1] | ||
|
||
GIT | ||
--- | ||
属于 linkgit:git[1] 文档 |
Oops, something went wrong.