我有一个包含其他git存储库的git存储库。是否有命令以递归方式推送和/或拉取元存储库而不是子存储库?
答案 0 :(得分:10)
每当我想要更新我的llvm / clang存储库时,我发现自己处于同样的情况,并且通过一些bash帮助,我可以像这样'git pull'每个人:
$> for dir in $(find . -name ".git"); do cd ${dir%/*}; git pull ; cd -; done
这将'git pull'在您当前目录下找到的所有git repos,如果它们是裸存储库,可能无法工作。
答案 1 :(得分:9)
不完全git pull
,但关闭:
git fetch --recurse-submodules
来自the Git docs:
--recurse-submodules[=yes|on-demand|no]
此选项控制是否以及在何种条件下应该提取已填充的子模块的新提交。它可以用作布尔选项,在设置为no时完全禁用递归,或者在设置为yes时无条件地递归到所有填充的子模块,这是使用此选项时没有任何值的默认值。当超级项目检索到更新子模块对尚未在本地子模块克隆中的提交的引用的提交时,按需使用仅递归到填充的子模块。
答案 2 :(得分:8)
如果你在谈论子模块,请参阅纸杯蛋糕回答。
如果你在谈论一些包含git repos的文件夹层次结构,你可以签出clustergit
,这是我编程的工具:https://github.com/mnagel/clustergit
答案 3 :(得分:1)
我只是编写一个脚本来递归执行多个git存储库。你可以从这里抓住它:
https://github.com/DariuszOstolski/rgit
这个想法与clustergit完全相同,但实现方式不同。
答案 4 :(得分:0)
我需要这一段时间,并通过npm提供cli。 https://github.com/kenglxn/gitr/blob/master/README.md
只需做" npm install -g gitr"然后你可以使用gitr递归地执行任何git命令。