2017-08-12 110 views
2

我想在回购A中使用一些回购B的变化。 B不属于我。 A是我的。git子模块与其他回购

我所做的:

git submodule add -- https://github.com/debois/elm-mdl.git external/elm-mdl 

Belm-mdl

我已经克隆回购,因此--在上述命令。

我然后运行:

cd external/elm-mdl 
git checkout v9 
git checkout v9-my 
.. make some changes and commit. 
cd ../.. 

早在A的根

git config -f .gitmodules submodule.external/elm-mdl.branch v9-my 

└─ $ ▶ cat .gitmodules 
[submodule "external/elm-mdl"] 
    path = external/elm-mdl 
    url = https://github.com/debois/elm-mdl.git 
    branch = v9-my 

现在,我怎样才能把这些提交保存为我不能更新或创建远程回购B分支即elm-mdl

我不能远程更新:

ashish @ 7567 ~/work/be_autonomous (master) 
└─ $ ▶ git submodule update --remote --merge 
fatal: Needed a single revision 
Unable to find current origin/v9-my revision in submodule path 'external/elm-mdl' 
ashish @ 7567 ~/work/be_autonomous (master) 

我可以保存这些提交在我原来的回购A
或者有什么选择?

回答

1
git config -f .gitmodules submodule.external/elm-mdl.branch v9-my 

这意味着external/elm-mdl会尽量拉/更新v9-my分支:当您在子模块做修改,你需要在该分支(和推新的提交到子模块的远程回购)

cd external/elm-mdl 
git checkout -b v9-my 
# work 
git add . 
git commit -m "new commit in v9-my branch" 
git push -u origin v9-my 

如果你不能推到当前的回购,叉即回购(使你自己)的推那里。

然后,当你修改和提交,推辅助模块,你仍然需要回到母公司回购,添加,提交和过于推有:它会保存子模块的新的SHA1(其gitlink,一个special entry in the index of the parent repo

+0

呃..所以我不能没有分叉工作.. :(..我希望如果有可能保存在原来的回购仅提交.. 感谢交代 –

+0

@AshishNegi没错:分叉允许你保存这些新的提交,并为你的父回购引用它们。 – VonC

+0

是啊..我在等待别人提出一些有趣的东西... KS –