2016-07-15 78 views
0

混帐子模块更新我克隆一个Git仓库,mainrepo,其中有一个子模块submodule1。当我尝试从submodule1获得最新更新:--remote不起作用

$ cd mainrepo 

$ git submodule add [email protected]:myaccount/submodule1.git 

$ git submodule update --remote submodule1 
Usage: git submodule [--quiet] add [-b branch] [--reference <repository>] [--] <repository> [<path>] 
    or: git submodule [--quiet] status [--cached] [--recursive] [--] [<path>...] 
    or: git submodule [--quiet] init [--] [<path>...] 
    or: git submodule [--quiet] update [--init] [-N|--no-fetch] [--rebase] [--reference <repository>] [--merge] [--recursive] [--] [<path>...] 
    or: git submodule [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...] 
    or: git submodule [--quiet] foreach [--recursive] <command> 
    or: git submodule [--quiet] sync [--] [<path>...] 

$ git submodule update --remote 
Usage: git submodule [--quiet] add [-b branch] [--reference <repository>] [--] <repository> [<path>] 
    or: git submodule [--quiet] status [--cached] [--recursive] [--] [<path>...] 
    or: git submodule [--quiet] init [--] [<path>...] 
    or: git submodule [--quiet] update [--init] [-N|--no-fetch] [--rebase] [--reference <repository>] [--merge] [--recursive] [--] [<path>...] 
    or: git submodule [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...] 
    or: git submodule [--quiet] foreach [--recursive] <command> 
    or: git submodule [--quiet] sync [--] [<path>...] 

我相信,我曾经尝试更新submodules这样,文档说,也这样做,但我不明白为什么这是行不通的。

但是,如果我做一个获取并直接在submodule合并,它就会被更新到最新的版本库提交我所想要的:

$ cd submodule1 

$ git fetch && git merge master 

为什么没有submodule update --remote submodule1命令?

也许这可以帮助:

$ vim mainrepo/.git/config 
[core] 
     repositoryformatversion = 0 
     filemode = true 
     bare = false 
     logallrefupdates = true 
[remote "origin"] 
     fetch = +refs/heads/*:refs/remotes/origin/* 
     url = [email protected]:myaccount/mainrepo.git 
[branch "master"] 
     remote = origin 
     merge = refs/heads/master 
[submodule "local/src/utils"] 
     url = [email protected]:myaccount/submodule1.git 

$ vim .gitmodules 
[submodule "submodule1"] 
     path = submodule1 
     url = [email protected]:myaccount/submodule1.git 
+2

什么版本的git('git --version')? – larsks

+0

该计算机上的废话git版本是1.7.1 ...更新远程子模块在我的个人电脑上工作,其中git版本更新为2.9.0。 – kaligne

回答

1

我会建议你阅读从git的子模块速成班:https://git-scm.com/book/en/v2/Git-Tools-Submodules

我的猜测是,既然你已经克隆的资源库有一个子模块(检查.gitmodules在回购的根!)你不应该再次git submodule add它。

克隆库,然后运行git submodule update --recursive就足够了!

另外,git clone --recurse-submodules做这个自动为您。