我想知道是否有办法确定指定目录下的哪些子文件夹是git项目。之后,检查哪些git项目需要通过'git fetch'或其他方式进行更新。
例如,我在我的主文件夹中有一个名为development的文件夹,它使用git保存各种项目,其中大约10%。我希望能够运行一个命令来检查开发目录中所有git文件夹的任何更新,而不是单独检查项目更新。
如果它可以更新非冲突的项目也会很好。
答案 0 :(得分:4)
获取当前目录下所有Git repos列表的一种方法是使用以下命令:
find . -name '.git' | xargs -n 1 dirname
然后,您可以将其提供给shell脚本,该脚本在每个存储库中运行您选择的命令,方法是更改为目录或使用Git的--git-dir
和--work-tree
参数。
答案 1 :(得分:3)
这是一个(hacky)单行代码:
back=`pwd`; for d in `find . -type d -name .git` ; do cd "$d/.."; git pull ; cd $back ; done
答案 2 :(得分:1)
看看android的repo。我认为它没有特定于Android的东西,你可以根据自己的需要进行调整。
答案 3 :(得分:1)
简而言之:
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
。