这是我的(简化,无错误检查)git hook:
git diff --cached | clang-format-diff -p1 > $PATCHFILE
git patch-apply -p0 $PATCHFILE # modify the working tree
git patch-apply -p0 --cached $PATCHFILE # modify what is staged
这很方便,但是,当用户正在运行git commit -a
时,documentation到git diff
会通知我“有多种方法可以检查您的工作树”:
$ git diff (1) $ git diff --cached (2) $ git diff HEAD (3)
尚未为下一次提交暂存的工作树中的更改。
索引与上次提交之间的变化; 如果你在没有“-a”选项的情况下运行“git commit”,你会提交什么。
自上次提交以来工作树中的更改; 如果您运行“git commit -a”
,您将提交的内容
因此,当使用git commit -a
时,脚本不起作用。这是因为它在索引显然没有添加更改的阶段被调用。
我想仅对分段文件应用clang-format-diff更改。
git commit -a
在暂存文件之前调用预提交挂钩?这不是一个错误吗?git commit -a
情况下吗?我宁愿避免格式化未分级的更改。