如何阻止自己使用“git commit -a”?

Posted

技术标签:

【中文标题】如何阻止自己使用“git commit -a”?【英文标题】:How can I stop myself from using 'git commit -a'? 【发布时间】:2014-12-02 16:50:20 【问题描述】:

我承认有时我不应该使用git commit -a。大约有一半的时间是反射性的,通常是当我认为我在单独的存储库中工作时 - 但我实际上是在一个更大的存储库中工作,这会影响广泛的目录。 p>

是否有我可以指定的.git/config 设置会导致-a 标志引发错误?

【问题讨论】:

我看不到。你可以破解 commit.c 就是这样。 相关:***.com/questions/25884007/disable-git-add-command/… 有人能告诉我为什么 -a 不好吗? 【参考方案1】:

感谢 VonC,我破解了一个我卡在我的 rc 文件中的函数:

git() 
    if [[ ($1 == "add") || ($1 == "stage") || ($1 == "commit") ]]; then
        if [[ $@ == *-a* ]]; then
            echo "Don't use 'git $1 -a'.";
        else
            command git "$@";
        fi
    else
        command git "$@";
    fi;

【讨论】:

优秀。看起来不错。 +1【参考方案2】:

是否有我可以指定的 .git/config 设置会导致 -a 标志引发错误?

我不知道。

你需要一个 git 包装器来检查参数(“commit”、“-a”、...),并且在特定命令上“commit -a”会抛出错误。

Jubobs'script(在comment above 中提到)就是这种包装器的一个很好的例子。

【讨论】:

【参考方案3】:

不,git 配置中没有任何内容可以执行此操作。但是,有一个解决方案,它是 git hooks。

Git 钩子是在执行 git 命令之前或之后执行的脚本 - 例如,如果没有提交消息,则有一个钩子会使您的提交失败。所以你可以为你的需要编写一个 costum 钩子,当提交马虎时它就会下降。

但是,就个人而言,我不会失败,而是显示一个额外的提示(例如“你确定吗?Y/N”)。想一想,你真的要永远屏蔽这个功能吗?

更多信息: http://git-scm.com/book/en/Customizing-Git-Git-Hooks

祝你好运!

【讨论】:

如果我有一种简单的方法来检测“草率”提交,这将起作用,但是当我可以用另一种更简单的方法来做时,把这么多的逻辑放进去似乎很浪费。但是感谢您的想法,这是一个很好的想法!

以上是关于如何阻止自己使用“git commit -a”?的主要内容,如果未能解决你的问题,请参考以下文章

使用 git commit -a 和 vim

如何查看commit的内容

如何在Git还原后返回本地存储库中的代码

如何删除git中的文件

git 修改已提交的 commit

git commit/push后如何回退