2014-10-08 72 views
3

我承认有时候我不应该使用git commit -a。它的反应时间大概是一半,我经常在认为我在单独的仓库中工作 - 但我实际上在一个更大的项目中工作,这将会影响到目录和目录。如何阻止我使用'git commit -a'?

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

+0

没有,我能看到。你可以破解commit.c是关于它的。 – 2014-10-08 06:11:53

+0

相关:http://stackoverflow.com/questions/25884007/disable-git-add-command/25886149#25886149 – Jubobs 2014-10-08 06:44:08

+0

有人能指出我的方向,说明为什么 - 一个坏的东西? – 2014-10-08 09:19:27

回答

1

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

不是我所知道的。

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

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

1

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

Git钩子是在执行git命令之前或之后执行的脚本 - 例如,如果没有提交消息,就会有一个钩子失败。所以你可以为你的需求编写一个钩子钩子,这个钩子在提交的时候会马虎。但是,我个人并不会让它失败,而是显示一个额外的提示(例如“你确定吗?是/否”)。想想看,你真的想永远阻止功能吗?

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

祝您好运!

+0

你如何获得钩子中的git命令和选项? – 2014-10-08 09:06:15

+0

如果我有一个简单的方法来检测“马虎”的提交,但是如果我能以另一种更简单的方式做到这一点,那么把这么多的逻辑看起来很浪费,这将会起作用。但感谢这个想法,这是一个好主意! – 2014-10-09 03:21:57

2

感谢VonC,我设计了一个简单的功能我停留在我的RC文件:

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

优秀。这看起来很好。 +1 – VonC 2014-10-09 05:36:47