mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-08 15:04:05 +08:00
1 line
8.7 KiB
HTML
1 line
8.7 KiB
HTML
<div class="c-markdown doc-markdown"><div class="doc-postil"><div class="c-markdown"><h2>名称</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>git-checkout-index - 将索引中的文件复制到工作树上</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>概要</h2></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">git checkout-index [-u] [-q] [-a] [-f] [-n] [--prefix=<string>] [--stage=<number>|all] [--temp] [-z] [--stdin] [--] [<file>…]</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"><h2>选项</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>-u --index</p></div></div><div class="doc-postil"><div class="c-markdown"><p>更新索引文件中检出条目的统计信息。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-q --quiet</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果文件存在或不在索引中,请保持安静</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>-a --all</p></div></div><div class="doc-postil"><div class="c-markdown"><p>检出索引中的所有文件。不能与明确的文件名一起使用。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-n --no-create</p></div></div><div class="doc-postil"><div class="c-markdown"><p>不要签出新文件,只刷新已经签出的文件。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--prefix=<string></p></div></div><div class="doc-postil"><div class="c-markdown"><p>在创建文件时,请将<string>(通常是一个包含尾部/的目录)</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--stage=<number>|all</p></div></div><div class="doc-postil"><div class="c-markdown"><p>而不是检查未合并的条目,从命名的阶段复制文件。<number>必须介于1和3之间。注意:--stage = all自动表明--temp。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--temp</p></div></div><div class="doc-postil"><div class="c-markdown"><p>将文件复制到工作目录而不是将内容写入临时文件。临时名称关联将写入 stdout。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>--stdin</p></div></div><div class="doc-postil"><div class="c-markdown"><p>从标准输入中读取路径列表,而不是从命令行获取路径列表。路径由 LF 分隔(即每行一个路径)。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>-z</p></div></div><div class="doc-postil"><div class="c-markdown"><p>只与<code>--stdin</code>有意义;路径用 NUL 字符而不是 LF 分隔。</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>git checkout-index</code>什么都不做。你可能的意思<code>git checkout-index -a</code>。如果你想强制它,你想要的<code>git checkout-index -f -a</code>。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>直观性不是这里的目标。重复性是。“没有参数意味着没有工作”的原因是你应该能够执行的脚本:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">$ find . -name '*.h' -print0 | xargs -0 git checkout-index -f --</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>这将强制所有现有的<code>*.h</code>文件被替换为它们的缓存副本。如果空的命令行暗示“全部”,那么这将强制刷新索引中的所有内容,这不是重点。但是由于<code>git checkout-index</code>接受--stdin,使用它会更快:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">$ find . -name '*.h' -print0 | git checkout-index -f -z --stdin</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>当你知道剩下的将是文件名时,这<code>--</code>就是一个好主意;例如<code>-a</code>,它可以防止文件名的问题。在脚本中使用<code>--</code>可能是一个很好的策略。</p></div></div><div class="doc-postil"><div class="c-markdown"><h2>使用--temp 或--stage = all</h2></div></div><div class="doc-postil"><div class="c-markdown"><p>当<code>--temp</code>被使用时(或被<code>--stage=all</code>表明时)<code>git checkout-index</code>将为每个正在签出的索引条目创建一个临时文件。该索引不会用 stat 信息更新。如果调用者需要所有未合并条目的所有阶段,这些选项可能非常有用,以便可以通过外部合并工具处理未合并的文件。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>列表将写入 stdout,提供临时文件名与跟踪路径名的关联。列表格式有两个变体:</p></div></div><div class="doc-postil"><div class="c-markdown"><p>1. tempname TAB路径RS</p><p>第一种格式<code>--stage</code>是省略或不使用时使用的格式<code>--stage=all</code>。字段 tempname 是包含文件内容的临时文件名,path 是索引中的跟踪路径名。只输出请求的条目。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>2. stage1temp SP stage2temp SP stage3tmp TAB路径RS</p></div></div><div class="doc-postil"><div class="c-markdown"><p>第二种格式是什么时候使用<code>--stage=all</code>。如果在索引<code>.</code>中存在阶段条目或者没有阶段条目,则三个阶段临时字段(stage1temp,stage2temp,stage3temp)会列出临时文件的名称。只有阶段0条目的路径将始终从输出中省略。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>在这两种格式中,默认情况下 RS(记录分隔符)都是换行符,但如果在命令行上传递-z,则将为空字节。临时文件名总是安全的字符串; 他们将永远不会包含目录分隔符或空白字符。路径字段总是相对于当前目录,并且临时文件名始终相对于顶级目录。</p></div></div><div class="doc-postil"><div class="c-markdown"><p>如果被复制到临时文件的对象是符号链接,则该链接的内容将被写入普通文件。终端用户或瓷器会使用这些信息。</p></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"><pre class="prism-token token language-javascript">$ git checkout-index -n -f -a && git update-index --ignore-missing --refresh</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>使用 <em style="font-style: italic;">git checkout-index </em>来“导出整个树”</p></div></div><div class="doc-postil"><div class="c-markdown"><p>前缀能力基本上使它<code>git checkout-index</code>作为一个“导出为树”函数使用很简单。只需在索引中读取所需的树,然后执行:</p></div></div><div class="doc-postil"><div class="c-markdown"><pre class="prism-token token language-javascript">$ git checkout-index --prefix=git-export-dir/ -a</pre></div></div><div class="doc-postil"><div class="c-markdown"><p><code>git checkout-index</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"><pre class="prism-token token language-javascript">$ git checkout-index --prefix=.merged- Makefile</pre></div></div><div class="doc-postil"><div class="c-markdown"><p>这将检出当前缓存<code>Makefile.</code>在<code>merged-Makefile</code>文件中的副本。</p></div></div></div> |