mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-08 23:14:06 +08:00
13 lines
21 KiB
HTML
13 lines
21 KiB
HTML
<div class="c-markdown doc-markdown"><div class="doc-postil"><div class="c-markdown"><h2>Name</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>git-add - 将文件内容添加到索引</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>概要</h2></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">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] [--chmod=(+|-)x] [--] [<pathspec>…]</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><h2>描述</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>此命令使用工作树中的当前内容更新索引,以准备下一个提交的内容。它通常会将现有路径的当前内容作为一个整体添加,但通过一些选项,还可以使用它仅添加对所应用的工作树文件进行的部分更改的内容,或删除工作树中不存在的路径了。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>“索引”包含工作树内容的快照,并且这个快照被当作下一次提交的内容。因此,在对工作树进行任何更改之后,在运行commit命令之前,必须使用<code>add</code>命令将任何新的或修改的文件添加到索引。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在提交之前,命令可以执行多次。它只在add命令运行时添加指定文件的内容; 如果您希望在下一次提交中包含后续更改,则必须再次运行<code>git add</code>以将新内容添加到索引。</p></div></div><div class="doc-postil"><div class="c-markdown"><p><code>git status</code>命令可用于获取在下一次提交阶段更改的文件的摘要。</p></div></div><div class="doc-postil"><div class="c-markdown"><p><code>git add</code>命令默认不会添加被忽略的文件。如果在命令行上明确指定了任何被忽略的文件,<code>git add</code>将失败并显示被忽略的文件列表。忽略由Git执行的目录递归或文件名匹配达到的文件(在shell之前引用您的globs)将被忽略。<code>git add</code>命令可以用来添加<code>-f</code>(强制)选项忽略的文件。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>请参阅git-commit [1]了解将内容添加到提交的其他方法。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>选项</h2></div></div><div class="doc-postil"><div class="c-markdown"><p><pathspec>…</p></div></div><div class="doc-postil"><div class="c-markdown"><p>要从中添加内容的文件。<code>*.c</code>可以给Fileglobs(例如)添加所有匹配的文件。还可以给出一个主要的目录名(例如<code>dir</code>添加<code>dir/file1</code>和<code>dir/file2</code>)来更新索引以匹配整个目录的当前状态(例如,指定<code>dir</code>将记录<code>dir/file1</code>工作树中修改的文件,<code>dir/file2</code>添加到工作中的文件树,也是一个文件<code>dir/file3</code>,从工作树移除需要注意的是旧版本的Git用于忽略删除的文件;使用<code>--no-all</code>,如果你想添加修改或新的文件,但忽略删除那些选项。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>有关<pathspec>语法的更多详细信息,请参阅<code>pathspec</code>gitglossary [7]中的条目。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-n --dry-run</p></div></div><div class="doc-postil"><div class="c-markdown"><p>实际不要实际添加文件,只显示它们是否存在和/或将被忽略。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-v --verbose</p></div></div><div class="doc-postil"><div class="c-markdown"><p>Be verbose.</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-f --force</p></div></div><div class="doc-postil"><div class="c-markdown"><p>允许添加被忽略的文件。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-i --interactive</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在工作树中交互添加修改的内容到索引。可以提供可选的路径参数,以将操作限制为工作树的子集。有关详情,请参阅“交互模式”。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-p --patch</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在索引和工作树之间交互地选择补丁块,并将它们添加到索引中。这使用户有机会在将修改后的内容添加到索引之前查看差异。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>有效地运行<code>add --interactive</code>,但绕过最初的命令菜单并直接跳转到<code>patch</code>子命令。有关详情,请参阅“交互模式”。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-e --edit</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在编辑器中打开差异与索引并让用户进行编辑。编辑器关闭后,调整大块头并将补丁应用到索引。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>此选项的目的是挑选要应用的补丁行,或者甚至修改要分级的行内容。这比使用交互式外观选择器更快更灵活。但是,很容易混淆自己并创建一个不适用于索引的补丁。请参阅下面的编辑补丁。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-u --update</p></div></div><div class="doc-postil"><div class="c-markdown"><p>更新已存在匹配<pathspec>条目的索引。这会删除和修改索引条目以匹配工作树,但不会添加新文件。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果在使用<code>-u</code>选项时没有给出<pathspec> ,则会更新整个工作树中的所有跟踪文件(用于将更新限制为当前目录及其子目录的旧版本Git)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-A --all --no-ignore-removal</p></div></div><div class="doc-postil"><div class="c-markdown"><p>更新索引不仅在工作树具有匹配<pathspec>的文件的位置,而且索引已经有条目的位置。这会添加,修改和删除索引条目以匹配工作树。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果在使用<code>-A</code>选项时没有给出<pathspec> ,则会更新整个工作树中的所有文件(Git的旧版本用于将更新限制为当前目录及其子目录)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--no-all --ignore-removal</p></div></div><div class="doc-postil"><div class="c-markdown"><p>通过添加索引未知的新文件和工作树中修改的文件来更新索引,但忽略已从工作树中删除的文件。当没有使用<pathspec>时,该选项是无操作的。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>这个选项主要是为了帮助习惯于老版本Git的用户,他们的“git add <pathspec> ...”是“git add --no-all <pathspec> ...”的同义词,即忽略被删除的文件。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-N --intent-to-add</p></div></div><div class="doc-postil"><div class="c-markdown"><p>只记录路径将在稍后添加的事实。路径条目放置在没有内容的索引中。除此之外,这对于显示这些文件的非分离内容<code>git diff</code>以及提交它们<code>git commit -a</code>很有用。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--refresh</p></div></div><div class="doc-postil"><div class="c-markdown"><p>不要添加文件,而只需刷新索引中的stat()信息。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--ignore-errors</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果某些文件因索引错误而无法添加,请不要中止操作,而是继续添加其他文件。命令仍应以非零状态退出。<code>add.ignoreErrors</code>可以将配置变量设置为true以使其成为默认行为。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--ignore-missing</p></div></div><div class="doc-postil"><div class="c-markdown"><p>该选项只能与--dry-run一起使用。通过使用这个选项,用户可以检查是否有任何给定的文件被忽略,不管它们是否已经存在于工作树中。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--no-warn-embedded-repo</p></div></div><div class="doc-postil"><div class="c-markdown"><p>默认情况下,<code>git add</code>向嵌入式存储库添加索引时会发出警告,而不用<code>git submodule add</code>在其中创建条目<code>.gitmodules</code>。该选项将会禁止警告(例如,如果您正在手动对子模块执行操作)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--chmod=(+|-)x</p></div></div><div class="doc-postil"><div class="c-markdown"><p>覆盖添加文件的可执行位。可执行位仅在索引中更改,磁盘上的文件保持不变。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--</p></div></div><div class="doc-postil"><div class="c-markdown"><p>此选项可用于将命令行选项与文件列表分开,(当文件名可能被误认为是命令行选项时很有用)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>结构</p></div></div><div class="doc-postil"><div class="c-markdown"><p>可选的配置变量<code>core.excludesFile</code>表示文件的路径,该文件包含要从git-add中排除的文件名的模式,类似于$ GIT_DIR / info / exclude。排除文件中的模式除了info / exclude中的使用外。见gitignore [5]。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>例子</h2></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p>添加目录及其子目录<code>*.txt</code>下所有文件的内容<code>Documentation</code>:$ git add Documentation / \ *。txt注意<code>*</code>在本例中星号是从shell引用的; 这让命令包含来自目录子目录的<code>Documentation/</code>文件。</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p>考虑从所有git - *。sh脚本添加内容:</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><p>$ git add git-*.sh</p></div></div><div class="doc-postil"><div class="c-markdown"><p>因为这个例子让shell扩展了星号(即你明确列出了这些文件),所以它没有考虑<code>subdir/git-foo.sh</code>。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>交互模式</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>当命令进入交互模式时,它显示<code>status</code>子命令的输出,然后进入其交互式命令循环。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>命令循环显示可用的子命令列表,并提示“What now>”。通常,当提示以单个结尾时<code>></code>,您可以只选择其中一个选项并输入return,如下所示:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash"> *** Commands *** 1: status 2: update 3: revert 4: add untracked 5: patch 6: diff 7: quit 8: help
|
||
|
||
What now> 1</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>你也可以说<code>s</code>或<code>sta</code>或<code>status</code>只要选择是唯一的上方。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>主要的命令循环有6个子命令(加上帮助和退出)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>状态</p></div></div><div class="doc-postil"><div class="c-markdown"><p>这显示了HEAD和索引之间的变化(即,如果你这么说会犯什么内容<code>git commit</code>),以及索引和工作树文件之间的变化(也就是你可以在<code>git commit</code>使用之前进一步处理的内容<code>git add</code>)。示例输出如下所示:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash"> staged unstaged path 1: binary nothing foo.png 2: +403/-35 +1/-1 git-add--interactive.perl</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>它显示foo.png与HEAD有区别(但是它是二进制的,所以行数无法显示),索引副本和工作树版本之间没有区别(如果工作树版本也不同,<code>binary</code>将显示在的地方<code>nothing</code>)。另一个文件git-add {litdd} interactive.perl添加了403行,如果您提交了索引中的内容,则会删除35行,但工作树文件会进一步修改(一次添加和一次删除)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>更新</p></div></div><div class="doc-postil"><div class="c-markdown"><p>这将显示状态信息并发出“更新>>”提示。当提示以double结尾时<code>>></code>,可以进行多个选择,并用空格或逗号连接。你也可以说范围。例如“2-5 7,9”从列表中选择2,3,4,5,7,9。如果省略范围中的第二个数字,则会采用所有剩余的补丁。例如“7-”从列表中选择7,8,9。你可以说<code>*</code>选择一切。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>然后用你的选择突出显示<code>*</code>,如下所示:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash"> staged unstaged path 1: binary nothing foo.png* 2: +403/-35 +1/-1 git-add--interactive.perl</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>要删除选择,请使用<code>-</code>在输入前添加如下所示的内容:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">Update>> -2</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>做出选择之后,回答一个空行,为索引中选定路径的工作树文件的内容分段。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>还原</p></div></div><div class="doc-postil"><div class="c-markdown"><p>这与用户界面<code>update</code>非常相似,并且所选路径的暂存信息将恢复为HEAD版本的阶段信息。恢复新路径使得它们不受追踪。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>添加未跟踪</p></div></div><div class="doc-postil"><div class="c-markdown"><p>这有一个非常相似的用户界面<code>update</code>和<code>revert</code>,并允许您添加未经跟踪路径索引。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>patch</p></div></div><div class="doc-postil"><div class="c-markdown"><p>这使您可以从<code>status</code>类似选择中选择一条路径。选择路径后,它会显示索引和工作树文件之间的差异,并询问您是否要逐步更改每个块。您可以选择以下选项之一并键入return:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre><code class="language-Bash">y - stage this hunk
|
||
|
||
n - do not stage this hunk
|
||
|
||
q - quit; do not stage this hunk or any of the remaining ones
|
||
|
||
a - stage this hunk and all later hunks in the file
|
||
|
||
d - do not stage this hunk or any of the later hunks in the file
|
||
|
||
g - select a hunk to go to/ - search for a hunk matching the given regex
|
||
|
||
j - leave this hunk undecided, see next undecided hunk
|
||
|
||
J - leave this hunk undecided, see next hunk
|
||
|
||
k - leave this hunk undecided, see previous undecided hunk
|
||
|
||
K - leave this hunk undecided, see previous hunk
|
||
|
||
s - split the current hunk into smaller hunks
|
||
|
||
e - manually edit the current hunk? - print help</code></pre></div></div><div class="doc-postil"><div class="c-markdown"><p>在决定所有块的命运之后,如果选择了任何块</p><p>,那么索引会用选定的块更新。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>您可以通过设置配置变量<code>interactive.singleKey</code>为<code>true</code>来省略必须在此输入return 。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>diff</p></div></div><div class="doc-postil"><div class="c-markdown"><p>这使您可以查看将要提交的内容(即在HEAD和索引之间)。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>编辑补丁</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>调用<code>git add -e</code>或<code>e</code>从交互式外观选择器中选择将在您的编辑器中打开一个修补程序; 编辑器退出后,结果将应用于索引。您可以随意对修补程序进行任意更改,但请注意,某些更改可能会导致混淆结果,甚至导致无法应用的修补程序。如果您想完全中止操作(即,在索引中没有任何新操作),只需删除该补丁的所有行即可。下面的列表描述了您可能在修补程序中看到的一些常见事项,以及哪些编辑操作对它们有意义。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>添加内容</p></div></div><div class="doc-postil"><div class="c-markdown"><p>添加的内容由以“+”开头的行表示。您可以通过删除它们来防止暂存任何附加行。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>删除内容</p></div></div><div class="doc-postil"><div class="c-markdown"><p>删除的内容由以“ - ”开头的行表示。您可以通过将“ - ”转换为“”(空格)来阻止他们的移除。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>修改的内容</p></div></div><div class="doc-postil"><div class="c-markdown"><p>修改的内容由“ - ”行(删除旧内容),后跟“+”行(添加替换内容)表示。您可以通过将“ - ”行转换为“”并去除“+”行来阻止修改。请注意,只修改这一对的一半可能会对索引造成令人困惑的更改。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>还有更复杂的操作可以执行。但要小心,因为该补丁只适用于索引而不适用于工作树,所以工作树将显示为“撤消”索引中的更改。例如,向不在HEAD和工作树中的索引中引入一个新行将为新行提交提交,但该行将显示为在工作树中恢复。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>避免使用这些构造,或者非常谨慎地这样做。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>删除未触及的内容</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在索引和工作树之间没有差异的内容可以显示在上下文行上,以“”(空格)开头。您可以通过将空间转换为“ - ”来移除要移除的上下文行。生成的工作树文件将显示为重新添加内容。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>修改现有内容</p></div></div><div class="doc-postil"><div class="c-markdown"><p>也可以通过将它们分段移除(通过将“”转换为“ - ”)并在新内容中添加“+”行来修改上下文行。同样,可以修改现有添加或修改的“+”行。在任何情况下,新的修改都会在工作树中恢复。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>新的内容</p></div></div><div class="doc-postil"><div class="c-markdown"><p>您也可以添加修补程序中不存在的新内容; 只需添加新行,每行都以“+”开头。添加将在工作树中显示恢复。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>还有一些应该完全避免的操作,因为它们会使修补程序无法应用:</p></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p>添加上下文(“”)或删除(“ - ”)行</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p>删除上下文或删除行</p></li></ul></div></div><div class="doc-postil"><div class="c-markdown"><ul class="ul-level-0 list-paddingleft-2" style="margin: 10px 0px 10px 20px;"><li><p>修改上下文或删除行的内容</p></li></ul></div></div></div> |