如何 git 显示暂存文件?
How to git show a staged file?
我可以 git show <some-commit>:path/to/some/file
但我要替换什么 <some-commit>
才能获得文件的当前暂存版本?
上下文:我正在编写一个预提交挂钩,我想 运行 检查暂存文件而不诉诸于隐藏未暂存的更改。有没有更好的方法?
使用git show :path/to/some/file
.
"staged" 的文件表示文件的索引副本,它不同于某些其他副本,例如您可以通过 HEAD:path/to/some/file
.
访问的当前提交副本
存储在索引中的文件有一个阶段编号,通常为零。 (暂存槽 1、2 和 3 在冲突合并期间使用。)
要引用名为 F 的文件的副本(在您的情况下 F = path/to/some/file
),请使用修订说明符 :<em>number</em>:<em>F</em>
。在本例中为 :0:path/to/some/file
。当数字为零时(通常为零),您可以省略一个冒号和零,留下 :path/to/some/file
.
请注意,当 git status
没有提及该文件时,它在索引中,只是 :0:path/to/some/file
与 [=11] 具有 相同的数据 =].如果文件根本不在索引中——没有暂存槽——git status
会告诉您文件已暂存以供删除。
(关于上下文:如果你有 space,我建议做一个 git checkout-index
of every stage-zero-index-file into一个临时工作区。要轻松测试所有索引文件是否都处于零阶段,请使用 git write-tree
,如果任何文件位于零以外的暂存槽中,它将失败。)
我可以 git show <some-commit>:path/to/some/file
但我要替换什么 <some-commit>
才能获得文件的当前暂存版本?
上下文:我正在编写一个预提交挂钩,我想 运行 检查暂存文件而不诉诸于隐藏未暂存的更改。有没有更好的方法?
使用git show :path/to/some/file
.
"staged" 的文件表示文件的索引副本,它不同于某些其他副本,例如您可以通过 HEAD:path/to/some/file
.
存储在索引中的文件有一个阶段编号,通常为零。 (暂存槽 1、2 和 3 在冲突合并期间使用。)
要引用名为 F 的文件的副本(在您的情况下 F = path/to/some/file
),请使用修订说明符 :<em>number</em>:<em>F</em>
。在本例中为 :0:path/to/some/file
。当数字为零时(通常为零),您可以省略一个冒号和零,留下 :path/to/some/file
.
请注意,当 git status
没有提及该文件时,它在索引中,只是 :0:path/to/some/file
与 [=11] 具有 相同的数据 =].如果文件根本不在索引中——没有暂存槽——git status
会告诉您文件已暂存以供删除。
(关于上下文:如果你有 space,我建议做一个 git checkout-index
of every stage-zero-index-file into一个临时工作区。要轻松测试所有索引文件是否都处于零阶段,请使用 git write-tree
,如果任何文件位于零以外的暂存槽中,它将失败。)