另一个目录中的git-diff

时间:2010-05-05 19:09:07

标签: git zsh

我正在编写一个小zsh函数,它检查我的所有git存储库,看看它们是否脏,然后打印出需要提交的那些。到目前为止,我已经发现找出git存储库的干净/脏状态的最快方法是通过git-diffgit-ls-files

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

我有两个问题要问你们:

  1. 有没有人知道在git repo中检查文件更改/添加的更快,更有效的方法?
  2. 我希望将zsh函数传递给文件路径(比如~/Code/git-repos/)并检查其中的所有存储库。有没有办法不必cd进入每个目录并运行这些命令?像git-diff --quiet --git-dir="~/Code/git-repos/..."这样的东西太棒了。
  3. 谢谢! :)

1 个答案:

答案 0 :(得分:3)

如果$DIR包含您的目录名称并且它是标准布局(即.git目录是$DIR/.git),则git --git-dir $DIR/.git --work-tree $DIR status -s -uno将列出所有未提交更改的文件。检查列表是否为空应该可以提供您想要的内容。