git 有没有办法提示我“你正试图在生产分支中进行提交。你确定(y/N)吗?” 每次提交之前的消息。从消息中可以明显看出,我只希望它在特定分支(比如生产分支)上,以避免任何虚假提交。
3 回答
您可以使用预提交挂钩来检查您是否在生产分支上,但挂钩脚本无法从用户那里收集信息。一种可能的替代方法是声明应该使用--no-verify
(or -n
) 选项git
commit
来真正执行提交。
这可以通过以下内容来完成.git/hooks/pre-commit
:
#/bin/sh
case "$(git rev-parse --symbolic-full-name HEAD)" in
refs/heads/production)
echo 'Use `git commit --no-verify` to commit to production branch'
exit 1
;;
esac
适当设置您的提示并查看您始终所在的分支 - https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh
如果您想要更好的工具,例如更好的 git 提示符、ruby 版本提示符、python virtualenv 提示符等,请尝试bash-it
- https://github.com/revans/bash-it
如果您想要您在此处描述的确切解决方案,请为 git commit 设置一些别名脚本,设置一个pre-commit
挂钩等,它将查看您当前的分支并根据需要提示您。
听起来你可以使用Git Hook。这些是位于 .git/hooks 中的脚本,当某些事件发生时,git 可以运行这些脚本,例如在提交过程的各个阶段。
一个这样的钩子是“预提交”钩子。来自 git 书:
预提交挂钩首先运行,甚至在您输入提交消息之前。它用于检查即将提交的快照、查看您是否忘记了某些内容、确保测试运行或检查您需要在代码中检查的任何内容。从这个钩子中退出非零会中止提交 [...]
所以,你可以这样做:
- 将 .git/hooks/pre-commit.sample 重命名为 .git/hooks/pre-commit (启用钩子)
- 在获取当前分支名称的脚本中添加一些代码。也许是这样的:(
git status -sb | awk '{print $2}'
尽管可能有更好的方法)。 - 检查您是否在生产分支上,如果是,则使用 y/n 提示用户。
- 如果用户选择“否”,只需使用非零代码退出即可中止提交。