一次检查所有git存储库的状态

问题描述 投票:5回答:4

介绍

为了检查git存储库的状态,可以从存储库的根目录发出qazxsw poi。

git status

如果目录由多个目录组成,例如50个git存储库

C:\path\to\git_repositories\git_repo_1>git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working directory clean

也不

C:\path\to\git_repositories>dir

 Directory of C:\path\to\git_repositories

  .ssh
  git_repo_1
  ...
  git_repo_50
   0 File(s)
   51 Dir(s)

也不

C:\path\to\git_repositories>git status .
fatal: Not a git repository (or any of the parent directories): .git

能够检查所有存储库的状态

如何一次检查所有git存储库的状态?

windows git status
4个回答
7
投票

您可以使用更改为每个目录的C:\path\to\git_repositories>git status ./. fatal: Not a git repository (or any of the parent directories): .git 循环,for然后更改备份:

git status

如果在批处理文件中使用它,则需要将百分比加倍:

for /f "tokens=*" %a in ('dir /ad /b') do cd %a & git status & cd ..

编辑:

正如Cupcake所建议的那样,你可以这样做:

for /f "tokens=*" %%a in ('dir /ad /b') do cd %%a & git status & cd ..

这感觉就像一个更健壮,更灵活的解决方案(例如,您可以更轻松地调整它以使用存储在文本文件中的路径列表)。


2
投票

我去了:

for /f "tokens=*" %a in ('dir /ad /b') do git --git-dir=%a/.git --work-tree=%a status

我认为它更好,因为递归处理目录。

编辑以更清洁的方式显示回购的名称。


2
投票

如果你是一个工具家伙,你可以使用我最近写的一个名为find . -name .git -execdir bash -c 'echo -en "\033[1;31m"repo: "\033[1;34m"; basename "`git rev-parse --show-toplevel`"; git status -s' \; 的小帮手(并且仍在写)。

我回答了一个RepoZ

这是当前开发阶段的截图,希望您能看到它对您是否有帮助:

quite similar question in more detail here

如果你想知道像RepoZ这样的字符串是什么意思 - 它们是精简状态字符串,告诉你是否有提交或推送提交以及是否在本地添加/修改/删除了文件。关于+45 ~403 -88的更多细节


0
投票

如果您的系统由众多Git存储库组成,那么可能是Google project site on GitHub工具创建的情况:repo

如果您发现自己编写脚本以在这些存储库上分发Git命令,则应该切换到https://code.google.com/archive/p/git-repo/

repo使用一个名为“manifest.xml”的(不幸的)XML文件,该文件指定工作区中的Git存储库。对于每个repo,指定应该出现哪个分支和提交;你可以使用repo将Git存储库“固定”到特定版本,或者跟踪磁头。

如果你有一个repo工作区

repo

然后$ repo status 会做你所要求的几乎:迭代Git回购并给你一个状态。

© www.soinside.com 2019 - 2024. All rights reserved.