我正在编写一个预提交钩子,并且想要检查即将提交的每个文件的全部内容(特别是对文件进行lint检查).我想lint检查文件,因为它将被提交,而不是因为它存在于我的工作树中(可能不同).
git附带的预提交钩子示例向您展示了如何获取diff(因此您可以检查空间等),但我需要获取整个文件,因为它将被提交.
Cas*_*bel 10
试试这个:
git --work-tree=/path/to/checkout-area checkout-index path/to/file-to-checkout
Run Code Online (Sandbox Code Playgroud)
该--work-tree选项告诉git使用不同的区域作为工作树,这样就不会覆盖真正的工作树中的文件.您可能还需要添加-f选项以告知它在必要时进行覆盖,但如果您的脚本在其自身之后正确清理则不需要.有关更多信息,请参阅checkout-index的手册页.
单个1文件的另一个解决方案是(假设您不是在冲突的合并或rebase期间):
$ git show :0:path/to/file
Run Code Online (Sandbox Code Playgroud)
(path/to/file相对于存储库中的顶级目录).
或" git cat-file blob :0:path/to/file",(我认为)不会调用任何过滤器(关键字扩展,行尾转换等).
请参阅git-rev-parse手册页中有关扩展sha-1语法的部分
1.)Jefromi答案的优点是使用git checkout-index你可以签出多个文件; 你可以检查整个目录甚至整个项目.
| 归档时间: |
|
| 查看次数: |
374 次 |
| 最近记录: |