2010-05-05 62 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

相关问题