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

Ala*_* H. 24 git

git如果我要提交的更改包含某个字符串(例如,@todo@hack),我希望在备份时暂存‡ .

有人能告诉我如何实现这一目标吗?

†或警告.
‡或提交时.

Wil*_*ell 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
Run Code Online (Sandbox Code Playgroud)

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

  • 您还可以添加-n以禁止所有挂钩 (4认同)
  • 我不认为钩子可以访问命令行参数,但是你可以(在 Bourne shell 中)执行 'IGNORE_TODO=yes git commit -m msg' 并在钩子内检查 $IGNORE_TODO = yes 。 (2认同)

Tim*_*rry 5

有关更通用和彻底的解决方案,请查看Git Confirm

Asciinema Git 确认演示