Linux 递归检查git目录更新
我想知道是否有办法确定指定目录下的哪些子文件夹是git项目。之后,通过“git fetch”或其他方式检查哪些git项目需要更新 例如,我的主文件夹中有一个名为development的文件夹,其中包含各种项目,其中约10%使用git。我希望能够运行一个命令来检查开发目录中所有git文件夹的任何更新,而不是单独检查项目更新Linux 递归检查git目录更新,linux,git,ubuntu,Linux,Git,Ubuntu,我想知道是否有办法确定指定目录下的哪些子文件夹是git项目。之后,通过“git fetch”或其他方式检查哪些git项目需要更新 例如,我的主文件夹中有一个名为development的文件夹,其中包含各种项目,其中约10%使用git。我希望能够运行一个命令来检查开发目录中所有git文件夹的任何更新,而不是单独检查项目更新 如果它能更新没有冲突的项目,那也太好了。看看android的。我认为它没有特定于android的功能,您可以根据自己的需要对其进行调整。获取当前目录下所有Git回购的列表的一种
如果它能更新没有冲突的项目,那也太好了。看看android的。我认为它没有特定于android的功能,您可以根据自己的需要对其进行调整。获取当前目录下所有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
简言之:
find . -name .git -execdir git pull -v ';'
您还可以创建以下脚本(例如,update\u src.sh
):
或在shell中创建以下别名:
alias git-pull-all='find $(git rev-parse --show-toplevel 2> /dev/null) -name .git -type d -execdir git pull -v ";"'
或者在
~/.gitconfig
中,您可以解释xargs命令中的-n参数吗。我查看了手册页,但是我仍然不确定它执行的功能。@MrAxilus xargs通常使用所有输出作为指定命令的命令行参数(在本例中是dirname)-n要求分割所有输入的1字片段,并为每个片段调用dirname。@Alexandpriymak,我明白了。使用find的-exec参数不是更好吗?@MrAxilus谢谢你的提示-exec选项很好。更新后的命令是“find.-name”.git'-exec dirname'{}'\;”,没有引号。嗯,repo到底做了什么而git没有?
alias git-pull-all='find $(git rev-parse --show-toplevel 2> /dev/null) -name .git -type d -execdir git pull -v ";"'