如何进行 git 预提交代码检查?

tim*_*der 8 git pre-commit pre-commit-hook

第一个问题......甚至有可能用git来完成这个吗?:)

我想要的是这个:

有时,为了自己的调试目的,我将代码中的一个变量切换为true( localMode = true;)。但这不应该被提交。我应该只提交变量设置为false. 当然,有时我会忘记进行此更改。如果我即将提交“错误”代码,git 是否有可能以某种方式停止或警告我?

UPD:
感谢您的帮助!我最终得到了以下 shell 脚本:

#!/bin/bash
git diff --cached --name-only | while read FILE; do
if [[ $(echo "$FILE" | grep -E "^.+main\-controller\.js$") ]]; then
    content=$(<"$FILE")
    if [[ $(echo "$content" | grep -E "rootScope\.localMode = true") ]]; then   
        echo -e "\e[1;31m\tCommit contains localMode set to true.\e[0m" >&2
        exit 1
    fi
fi
done
Run Code Online (Sandbox Code Playgroud)

dca*_*tro 5

是的,您可以使用pre-commit挂钩。

只需pre-commit在“.git/hooks”文件夹中放置一个名为(无扩展名)的 shell 脚本,其中包含检查变量的逻辑,以及:

  • 将其更改为false并继续提交或
  • 打印一条消息告诉用户手动更正值,并以非零代码退出以中止提交

hooks 文件夹应该包含一些示例,例如“pre-commit.sample”,您可能会发现它们很有帮助。

文档

pre-commit钩首次运行之前,你甚至在键入提交消息。它用于检查即将提交的快照,查看您是否忘记了某些内容,确保测试运行,或检查您需要在代码中检查的任何内容。从这个钩子退出非零会中止提交,尽管你可以使用 git commit --no-verify 绕过它。您可以执行诸如检查代码样式(运行 lint 或等效的东西)、检查尾随空格(默认挂钩正是这样做的)或检查有关新方法的适当文档之类的操作。


san*_*yle 5

下面的链接呢?

http://wadmiraal.net/lore/2014/07/14/how-git-hooks-made-me-a-better-and-more-lovable-developer/

我认为您可以localMode = true在链接的示例代码中添加一些正则表达式来检测。