5

git 有没有办法提示我“你正试图在生产分支中进行提交。你确定(y/N)吗?” 每次提交之前的消息。从消息中可以明显看出,我只希望它在特定分支(比如生产分支)上,以避免任何虚假提交。

4

3 回答 3

5

您可以使用预提交挂钩来检查您是否在生产分支上,但挂钩脚本无法从用户那里收集信息。一种可能的替代方法是声明应该使用--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
于 2013-03-21T07:37:41.993 回答
3

适当设置您的提示并查看您始终所在的分支 - 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挂钩等,它将查看您当前的分支并根据需要提示您。

于 2013-03-21T06:24:35.933 回答
1

听起来你可以使用Git Hook。这些是位于 .git/hooks 中的脚本,当某些事件发生时,git 可以运行这些脚本,例如在提交过程的各个阶段。
一个这样的钩子是“预提交”钩子。来自 git 书:

预提交挂钩首先运行,甚至在您输入提交消息之前。它用于检查即将提交的快照、查看您是否忘记了某些内容、确保测试运行或检查您需要在代码中检查的任何内容。从这个钩子中退出非零会中止提交 [...]

所以,你可以这样做:

  • 将 .git/hooks/pre-commit.sample 重命名为 .git/hooks/pre-commit (启用钩子)
  • 在获取当前分支名称的脚本中添加一些代码。也许是这样的:(git status -sb | awk '{print $2}'尽管可能有更好的方法)。
  • 检查您是否在生产分支上,如果是,则使用 y/n 提示用户。
  • 如果用户选择“否”,只需使用非零代码退出即可中止提交。
于 2013-03-21T07:27:42.070 回答