设置和配置
获取和创建项目
基本快照
分支和合并
共享和更新项目
检查和比较
修补
调试
电子邮件
外部系统
服务器管理员
指南
管理
底层命令
- 2.43.1 → 2.47.0 无更改
- 2.43.0 11/20/23
- 2.36.1 → 2.42.3 无更改
- 2.36.0 04/18/22
- 2.1.4 → 2.35.8 无更改
- 2.0.5 12/17/14
概要
git checkout-index [-u] [-q] [-a] [-f] [-n] [--prefix=<string>] [--stage=<number>|all] [--temp] [--ignore-skip-worktree-bits] [-z] [--stdin] [--] [<file>…]
选项
- -u
- --index
-
更新索引文件中已检出条目的状态信息。
- -q
- --quiet
-
如果文件存在或不在索引中,则保持静默
- -f
- --force
-
强制覆盖现有文件
- -a
- --all
-
检出索引中的所有文件,除了设置了 skip-worktree 位的文件(请参阅
--ignore-skip-worktree-bits
)。不能与显式文件名一起使用。 - -n
- --no-create
-
不要检出新文件,只刷新已检出的文件。
- --prefix=<string>
-
创建文件时,在前面添加 <string>(通常是包含尾部 / 的目录)
- --stage=<number>|all
-
而不是检出未合并的条目,从命名的阶段复制文件。<number> 必须在 1 到 3 之间。注意:--stage=all 自动意味着 --temp。
- --temp
-
而不是将文件复制到工作目录,而是将内容写入临时文件。临时名称关联将写入标准输出。
- --ignore-skip-worktree-bits
-
检出所有文件,包括设置了 skip-worktree 位的文件。
- --stdin
-
而不是从命令行获取路径列表,而是从标准输入读取路径列表。默认情况下,路径以 LF 分隔(即每行一个路径)。
- -z
-
仅在
--stdin
情况下有意义;路径以 NUL 字符分隔而不是 LF。 - --
-
不要将任何更多参数解释为选项。
使用的标志顺序曾经很重要,但现在不再重要了。
只执行 git checkout-index
不会执行任何操作。您可能指的是 git checkout-index -a
。如果您想强制执行,则需要 git checkout-index -f -a
。
这里不是以直观性为目标。而是重复性。 “无参数表示无工作” 行为的原因是,从脚本中,您应该能够执行
$ find . -name '*.h' -print0 | xargs -0 git checkout-index -f --
这将强制所有现有的 *.h
文件被其缓存的副本替换。如果空命令行表示“全部”,那么这将强制刷新索引中的所有内容,这不是重点。但由于 git checkout-index 接受 --stdin,因此使用以下方法会更快
$ find . -name '*.h' -print0 | git checkout-index -f -z --stdin
当您知道其余部分将是文件名时,--
只是一个好主意;它将防止出现文件名例如 -a
的问题。在脚本中使用 --
可能是一个好策略。
使用 --temp 或 --stage=all
当使用 --temp
(或由 --stage=all
隐含)时,git checkout-index 将为每个要检出的索引条目创建一个临时文件。索引不会更新状态信息。如果调用者需要所有未合并条目的所有阶段,以便外部合并工具可以处理未合并的文件,则这些选项很有用。
将向标准输出写入一个列表,提供临时文件名与跟踪路径名的关联。列表格式有两种变体
-
tempname TAB path RS
第一种格式是在省略
--stage
或不是--stage=all
时使用的格式。tempname 字段是保存文件内容的临时文件名,path 是索引中跟踪的路径名。仅输出请求的条目。 -
stage1temp SP stage2temp SP stage3tmp TAB path RS
第二种格式是在使用
--stage=all
时使用的格式。三个阶段临时字段(stage1temp、stage2temp、stage3temp)列出如果索引中存在阶段条目则临时文件的名,或者如果不存在阶段条目则列出.
。仅具有阶段 0 条目的路径将始终从输出中省略。
在这两种格式中,RS(记录分隔符)默认为换行符,但如果在命令行上传递了 -z,则为 null 字节。临时文件名始终是安全字符串;它们永远不会包含目录分隔符或空格字符。path 字段始终相对于当前目录,临时文件名始终相对于顶级目录。
如果要复制到临时文件的对象是符号链接,则链接的内容将写入普通文件。由最终用户或 Porcelain 利用此信息。
示例
- 仅更新和刷新已检出的文件
-
$ git checkout-index -n -f -a && git update-index --ignore-missing --refresh
- 使用 git checkout-index “导出整个树”
-
前缀功能基本上使得使用 git checkout-index 作为“导出为树”函数变得微不足道。只需将所需的树读入索引,然后执行
$ git checkout-index --prefix=git-export-dir/ -a
git checkout-index
将“导出”索引到指定的目录中。最后的 "/" 非常重要。导出的名称实际上只是在前面添加了指定的字符串。将其与以下示例进行对比。
- 导出带前缀的文件
-
$ git checkout-index --prefix=.merged- Makefile
这将检出
Makefile
的当前缓存副本到文件.merged-Makefile
中。
GIT
是 git[1] 套件的一部分