我想知道是否有一种方法来确定指定的目录下的哪些子文件夹是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
。