Git-hook:运行`git commit -a`

时间:2017-09-19 12:26:34

标签: git githooks clang-format

这是我的(简化,无错误检查)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时,documentationgit diff会通知我“有多种方法可以检查您的工作树”:

$ git diff            (1)
$ git diff --cached   (2)
$ git diff HEAD       (3)
     

尚未为下一次提交暂存的工作树中的更改。

     

索引与上次提交之间的变化; 如果你在没有“-a”选项的情况下运行“git commit”,你会提交什么。

     

自上次提交以来工作树中的更改; 如果您运行“git commit -a”

,您将提交的内容

因此,当使用git commit -a时,脚本不起作用。这是因为它在索引显然没有添加更改的阶段被调用。

我想仅对分段文件应用clang-format-diff更改。

问题:

  1. 显然,为什么git commit -a在暂存文件之前调用预提交挂钩?这不是一个错误吗?
  2. 我该怎么办?我可以以某种方式在预提交钩子中检测到我在git commit -a情况下吗?我宁愿避免格式化未分级的更改。
  3. 备注

0 个答案:

没有答案