【问题标题】:Git pre-commit isn't commitingGit预提交没有提交
【发布时间】:2019-10-04 16:54:33
【问题描述】:

我已经写了一个pre-commit 钩子在提交之前运行golinter

#!/bin/bash

REV_NUMBER=$(git rev-list --max-count=1 HEAD)

if [[ "$REV_NUMBER" = "" ]]; then
  exit 0
fi

echo "golangci-lint run --new-from-rev $REV_NUMBER"
golangci-lint run --new-from-rev $REV_NUMBER

exit 1

预提交文件位于我的<project>\.git\hooks\pre-commit

当我执行git commit -m "Message" 时,预提交挂钩运行并执行 linting 部分。但即使在成功完成后,git commit 也永远不会发生。我的意思是文件仍然保留在暂存区。

为什么?

【问题讨论】:

    标签: git githooks pre-commit-hook


    【解决方案1】:

    删除最后的出口 1 或替换为出口 0。使用出口 1,您是在向调用进程(提交)发出信号,表明出现问题。

    【讨论】:

    • 谢谢。还有一个快速的问题。鉴于我的钩子位于项目级别。这是否意味着任何拉动项目的人都会配置这些钩子?还是每个人都必须手动配置?
    • 不,每个克隆项目的人都必须为其本地克隆配置挂钩。一个建议是在一个单独的文件夹中与您的项目一起版本化,并创建一个脚本以在他们设置项目时将它们移动到 .git/hooks 下。如果您使用包管理器来设置依赖项,您可能会找到一个插件或安装后自动执行此操作的脚本。
    猜你喜欢
    • 2011-09-07
    • 1970-01-01
    • 2013-12-15
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    相关资源
    最近更新 更多