我的android项目有一个非常有趣的git布局......一切都运行得很漂亮。
该结构基本上是一个具有几个内部子模块的主项目。其中一个内部子模块本身有一个子模块。
我可以在克隆项目时抛出--recursive
标志,或者我可以定期克隆它,然后遍历子模块文件夹并执行
git submodule init
git submodule update
我最近决定将我在github上使用的子模块分叉是一个更好的主意。原点是我的帐户Github url到我的分叉回购,我添加了一个“上游”遥控器,指向项目创建者的主人,以便我可以不时提取他们的最新信息。
我刚刚使用--recursive
标记在新擦除的计算机上克隆了我的项目,这是因为分支每个子模块并且一切都运行良好。
所以这就是问题......
我对整个过程的唯一问题是我的每个子模块都没有跟上那里的上游...我可以cd
进入每个子模块并执行git remote show
并且仅{ {1}}可见。
通过并重新添加origin
遥控器并不是什么大不了的事,但我想知道我的问题是什么。
另一个小问题:有没有办法在每个子模块上upstream
的单个递归克隆命令中添加一个内联标志?
任何想法?
答案 0 :(得分:2)
有没有办法在每个子模块上git checkout master的单个递归克隆命令中添加一个内联标志?
不是完全你问的是什么,但你可以配置一个子模块来跟随主人:见git submodule tracking latest。
在git submodule update --init --recursive
之后,git submodule update --remote --recursive
会将已分离的HEAD更新为上次提取的远程HEAD。
要真正检查并更新子模块,您需要一个别名,如blog post中所示:
git config --global alias.up-sub '!f() { cd $1 && git checkout master && git pull && git submodule update --init --recursive; }; f'
现在,要更新'框架'子模块,我们可以这样做:
git up-sub framework
使用
&&
代替;
,以防止在错误输入子模块名称时丢失工作。
答案 1 :(得分:0)
我联系了Github上的好人来回答分叉存储库的问题,而不是跟踪添加的上游,这就是我得到的回复:
每个克隆都有自己的遥控器列表。因此,每次创建新克隆时,您都需要添加自己喜欢的遥控器。出于这个原因,通常最好在您使用的每台计算机上安装一个存储库,然后在发布时提取更改和更新,而不是为每个任务创建新的克隆。