我目前正在编写一个小 zsh 函数,它检查我所有的 git 存储库,看看它们是否脏,然后打印出需要提交的存储库。到目前为止,我发现找出 git 存储库的干净/脏状态的最快方法是通过 git-diff
和git-ls-files
:
if ! git diff --quiet || git ls-files --others --exclude-standard; then
state=":dirty"
fi
我有两个问题想问你们:
- 有谁知道有一种更快、更有效的方法来检查 git 存储库中的文件更改/添加吗?
- 我希望为我的 zsh 函数提供一个文件路径(例如
~/Code/git-repos/
)并检查其中的所有存储库。有没有办法不必 cd 进入每个目录并运行这些命令?类似git-diff --quiet --git-dir="~/Code/git-repos/..."
那就太棒了。
谢谢! :)
最佳答案
如果 $DIR
保存您的目录名称并且它是标准布局(即 .git
目录是 $DIR/.git
),那么 git --git-dir $DIR/.git --work-tree $DIR status -s -uno 将会列出所有未提交更改的文件。检查列表是否为空应该会给你你想要的。
关于git-diff 在另一个目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2776049/