Git钩子预提交仅适用于暂存文件

Git钩子预提交仅适用于暂存文件,git,Git,我想钩住预提交。在预提交中,我想检查代码样式,例如/gradlew check 但是,它会检查所有文件,包括暂存文件和非暂存文件。格式化代码后,/gradlew check通过,但修改的文件尚未暂存。换句话说,现在我可以成功提交,但代码实际上没有格式化 我该怎么做?是的,我可以使用Travis CI,但我不能。您必须在某处提取暂存文件,因为您正在工作目录上运行检查。在最坏的情况下,这意味着如果您暂存一些文件,在不暂存的情况下更新它们,预提交钩子将在工作目录中的修改文件上运行,而这些文件与暂存文件

我想钩住
预提交
。在
预提交
中,我想检查代码样式,例如
/gradlew check

但是,它会检查所有文件,包括暂存文件和非暂存文件。格式化代码后,
/gradlew check
通过,但修改的文件尚未暂存。换句话说,现在我可以成功提交,但代码实际上没有格式化


我该怎么做?是的,我可以使用
Travis CI
,但我不能。

您必须在某处提取暂存文件,因为您正在工作目录上运行检查。在最坏的情况下,这意味着如果您暂存一些文件,在不暂存的情况下更新它们,预提交钩子将在工作目录中的修改文件上运行,而这些文件与暂存文件无关。那么如何提取暂存文件呢。将暂存文件提取到另一个路径,例如
/foo/tmp
mkdir-p/foo/tmp;git--git dir=/foo/bar/.git--work tree=/foo/tmp checkout index-a-f
@ElpieKay但是tmp dir中有许多文件包括一些未修改的文件。