2010-05-05 79 views
2

我目前正在編寫一個zsh函數來檢查我的所有git倉庫是否髒,然後打印出需要提交的倉庫。到目前爲止,我已經想通了,要找出一個Git倉庫的清潔/骯髒狀態最快的方法是通過git-diffgit-ls-filesgit-diff在另一個目錄中

if ! git diff --quiet || git ls-files --others --exclude-standard; then 
    state=":dirty" 
fi 

我對你的鄉親兩個問題:

  1. 不任何人都知道更快,更有效的方式來檢查文件更改/ git回購添加?
  2. 我想我的zsh函數被交給一個文件路徑(比如~/Code/git-repos/)並檢查其中的所有存儲庫。有沒有辦法做到不必cd到每個目錄並運行這些命令?像git-diff --quiet --git-dir="~/Code/git-repos/..."就好了。

謝謝! :)

+0

會http://stackoverflow.com/questions/2657935/checking-for-a-dirty-index-or-untracked-files-with-git幫助嗎? – VonC 2010-05-05 19:25:01

+0

@VonC - 看起來不錯。我希望我不必使用git-status,因爲它有點重,但它允許我指定「遠程」git目錄來查找,這可能是我唯一的選擇。 – ABach 2010-05-05 19:39:05

回答

3

如果$DIR握着你的目錄名,這是一個標準的佈局(即.git dir是$DIR/.git),然後git --git-dir $DIR/.git --work-tree $DIR status -s -uno會列出所有具有未提交更改的文件。檢查列表是否爲空應該給你你想要的。

+0

運行該命令給出「致命的:無效未跟蹤文件模式」=無'。「手冊頁將'no'指定爲-u的有效選項,但是會給出類似的錯誤。 – ABach 2010-05-05 19:44:42

+0

你說得對,對不起,語法稍微偏離。使用-uno代替-u = none – Oblomov 2010-05-06 06:16:36

+0

(我相應地修復了這個帖子) – Oblomov 2010-05-06 06:16:52