Git预提交钩子来检查假空格
我想制作一个预提交钩子,其中:Git预提交钩子来检查假空格,git,Git,我想制作一个预提交钩子,其中: 如果我有虚假空间,禁止提交 以其他方式允许它 这是我的密码 #!/bin/sh # # Vérifier avant un commit que l'on n'a pas mis de spurious spaces. a=$(git diff --check | wc -c) if [ $a -gt 0 ] then echo "Spurious space" exit 1 else echo "ok" fi 如果我在带有伪空格的diff中手动运行
- 如果我有虚假空间,禁止提交
- 以其他方式允许它
#!/bin/sh
#
# Vérifier avant un commit que l'on n'a pas mis de spurious spaces.
a=$(git diff --check | wc -c)
if [ $a -gt 0 ]
then
echo "Spurious space"
exit 1
else
echo "ok"
fi
如果我在带有伪空格的diff中手动运行脚本,我将获得“伪空格”。那太完美了。但是如果我把它作为预提交钩子运行,我总是得到“ok”
我的代码出了什么问题?这里最重要的是,您需要将要提交的内容(而不是工作目录中的内容)与
标题
版本进行比较。使用git diff--cached
(可以与--check
混合使用)很容易做到这一点
作为一个较小的改进,git diff--check
(带或不带--cached
)已经:
如果发现问题,则以非零状态退出
(见附件)。因此,如果您愿意让差异本身显示在屏幕上:
#! /bin/sh
git diff --check --cached
作为pre-commit钩子的整体,应该足够了。如果要在没有空白错误的情况下运行其他测试:
#! /bin/sh
git diff --check --cached || exit $?
... additional tests here ...
应该可以做到。我已经将其标记为迁移到StackOverflow(请耐心等待它得到适当的注意)
git
问题可能很难找到答案。为了将来的参考,请查看我们的元网站。谢谢你的回答!所以我很好地理解,问题是不使用--cached?是的。如果没有缓存的--cached
,diff将当前工作目录(显示为新的或b
版本)与暂存内容(旧的或a
版本)进行比较。使用--cached
,diff比较分段与头
。