recursion检查git目录更新

我想知道是否有一种方法来确定指定的目录下的哪些子文件夹是git项目。 之后,通过“git fetch”或其他方式检查哪些git项目需要更新。

例如,我有一个名为开发文件夹在我的家庭文件夹,它拥有约10%的使用git的各种项目。 我不希望单独检查项目更新,而是希望能够运行一个命令,检查开发目录中所有git文件夹的更新。

如果它可以更新非冲突的项目也是很好的。

一种获取当前目录下所有Git仓库列表的方法是使用以下命令:

find . -name '.git' | xargs -n 1 dirname 

然后,您可以将其提供给一个shell脚本,该脚本通过更改目录或使用Git的--git-dir--work-tree参数来运行您在每个存储库中选择的命令。

这是一个(哈克)单线程的:

 back=`pwd`; for d in `find . -type d -name .git` ; do cd "$d/.."; git pull ; cd $back ; done 

看看android的回购 。 我认为没有什么特定的机器人,你将能够适应你的需求。

简而言之:

 find . -name .git -execdir git pull -v ';' 

您也可以创建以下脚本(例如update_src.sh ):

 #!/bin/sh # Script to pull all git repositories to the recent version. ROOT=$(git rev-parse --show-toplevel 2> /dev/null) find "$ROOT" -name .git -type d -execdir git pull -v ';' 

或者在shell中创建一个以下别名:

 alias git-pull-all='find $(git rev-parse --show-toplevel 2> /dev/null) -name .git -type d -execdir git pull -v ";"' 

或者在~/.gitconfig