2014-10-08 93 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