如果字符串出现在source(或diff)中,Git会在提交之前发出警告

时间:2011-09-03 04:34:27

标签: git

如果我要提交的更改包含某个字符串(例如,git@todo),我希望在@hack回购中暂存‡时被阻止†。 / p>

有人可以告诉我如何实现这个目标吗?

†或警告。
‡或提交时。

4 个答案:

答案 0 :(得分:31)

一个简单的预提交钩子,用于检查是否添加了字符串'@todo',如下所示:

#!/bin/sh

. git-sh-setup  # for die 
git-diff-index -p -M --cached HEAD -- | grep '^+' |
grep @todo && die Blocking commit because string @todo detected in patch

如果这是.git/hooks/pre-commit的内容且可执行, 任何添加字符串@todo的补丁都将被拒绝。

答案 1 :(得分:4)

您可以使用pre-commit挂钩查找字符串并阻止(警告)提交。

示例预提交挂钩(在.git / hooks下)可以帮助您入门。

答案 2 :(得分:4)

要获得更全面,更全面的解决方案,请查看Git Confirm

Asciinema Git Confirm demo

答案 3 :(得分:1)

zsh提供了一个预命令执行挂钩,它可能允许运行某种脚本来询问你的提交,为@to-do或@hack进行grep,并在进行实际提交之前发出警告。这篇帖子(http://sebastiancelis.com/2009/11/16/zsh-prompt-git-users/)实际上是关于在zsh中构建一个花哨的git提示符,但是讨论了如何使用pre-command执行钩子。