Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 递归检查git目录更新_Linux_Git_Ubuntu - Fatal编程技术网

Linux 递归检查git目录更新

Linux 递归检查git目录更新,linux,git,ubuntu,Linux,Git,Ubuntu,我想知道是否有办法确定指定目录下的哪些子文件夹是git项目。之后,通过“git fetch”或其他方式检查哪些git项目需要更新 例如,我的主文件夹中有一个名为development的文件夹,其中包含各种项目,其中约10%使用git。我希望能够运行一个命令来检查开发目录中所有git文件夹的任何更新,而不是单独检查项目更新 如果它能更新没有冲突的项目,那也太好了。看看android的。我认为它没有特定于android的功能,您可以根据自己的需要对其进行调整。获取当前目录下所有Git回购的列表的一种

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

例如,我的主文件夹中有一个名为development的文件夹,其中包含各种项目,其中约10%使用git。我希望能够运行一个命令来检查开发目录中所有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 ";"'