提交前git提示我

时间:2013-03-21 06:20:54

标签: git

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

3 个答案:

答案 0 :(得分:5)

您可以使用预提交挂钩来检查您是否在生产分支上, 但钩子脚本无法从用户收集信息。有可能 另一种方法是声明应该使用--no-verify {或-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

答案 1 :(得分: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挂钩等,它将看到你当前的分支并根据需要提示你。

答案 2 :(得分:1)

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

  

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

所以,你可以这样做:

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