我可以做git show <some-commit>:path/to/some/file
,但我应该替换什么<some-commit>
来获取文件的当前暂存版本?
上下文:我正在编写一个预提交钩子,我想对暂存文件进行检查,而不是诉诸于暂存未暂存的更改。有没有更好的办法?
使用git show :path/to/some/file
.
“暂存”的文件表示文件的索引副本,该副本不同于其他副本,例如您可以通过HEAD:path/to/some/file
.
存储在索引中的文件有一个阶段号,通常为零。(暂存槽 1、2 和 3 在冲突合并期间使用。)
要引用名为F的文件的副本(在您的情况下为F = path/to/some/file
),请使用修订说明符。在这种情况下,就是. 当数字为零时——通常是——你可以省略一个冒号和零,留下.:number:F
:0:path/to/some/file
:path/to/some/file
请注意,当没有提及该文件时,它在索引中git status
,只是:0:path/to/some/file
具有与HEAD:path/to/some/file
. 如果文件根本不在索引中——没有暂存槽——<code>git status 会告诉您该文件已暂存以供删除。
(关于上下文:如果你有空间,我建议将git checkout-index
每个阶段零索引文件都放入一个临时工作区。为了轻松测试所有索引文件是否都处于零阶段,请使用git write-tree
,如果有文件则失败处于非零的暂存槽中。)