我在目录中有几个(大约10-15个)Git存储库:
~/plugins/admin
~/plugins/editor
~/plugins/etc
每个都有自己独立的存储库和远程服务器。
问题是要从我拥有的所有存储库中提取所有更改:
cd ~/plugins/admin
git pull origin master
password: ********
cd ..
cd ~/plugins/editor
git pull origin master
password: ********
cd ..
cd ~/plugins/etc
git pull origin master
password: ********
cd ..
如何设置Git子模块以使用1个命令拉出所有存储库
或者为Windows,Linux和Mac编写脚本(因为我使用所有3个操作系统)来有效地执行相同的操作。请记住,回购可以在不同的分支上,并且不一定有跟踪分支设置。
相同的说明:
答案 0 :(得分:9)
bash-3.2$ git submodule add git@repoUrl:SubmoduleName.git existing/submodule/path
Adding existing repo at 'existing/submodule/path' to the index
当您尝试从已存在某些git repo的地方添加子模块时,此repo将添加到索引中。
答案 1 :(得分:2)
使用Perl,就像Git一样。假设您拥有每个密码:
#!/usr/bin/perl
@dirs = ("admin", "editor", "etc" );
foreach(@dirs)
{
chdir($_);
exec( "git pull origin master" );
chdir("..");
}
通过一些额外的润色,您可以添加更好的错误处理和一次读取密码,而不是每次。
答案 2 :(得分:0)
(我知道这个问题很老,但也许我的回复对某人有用。)
现在你可以使用git submodule foreach来完成这样的任务。
也许git pull git pull --recurse-submodules = yes也可以帮到你