git-diff 在另一个目录中

标签 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 存储库中的文件更改/添加吗?
  2. 我希望为我的 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/

相关文章:

git - 我可以抑制 git hook 例如通过 git 命令行参数准备提交消息?

按显示顺序对修改后的文件执行 Git 命令

git - 将推送的分支恢复为具体的提交

zsh - 为什么 zsh 脚本中的 fc -l 1(又名历史记录 1)仅限于 30 个命令?

macos - 为什么找不到让我匹配多个模式?

python - PyCharm 终端错误

git - 使用 git 子模块创建多个远程分支

git - 在远程计算机上进行 GIT check out 后更改未反射(reflect)在 PhpStorm 中

zsh - 通过通配符过滤 zsh 数组

macos - 别名函数的 Git 补全