我有一个包含几个子模块的项目。其中许多是从 GitHub fork 克隆的,我为我的自定义模块添加了一个分支。一个典型的设置是这样的:
在本地文件夹中:MyProject1/Frameworks/SomeAmazingRepo/
$ git branch -vva
*my-fork 123456 [my-fork/my-fork] Latest commit msg from fork
master abcdef [origin/master] Latest commit msg from original repo
remotes/my-fork/my-fork 123456 [my-fork/my-fork] Latest commit msg from fork
remotes/my-fork/master abcdef [origin/master] Latest commit msg from original repo
remotes/origin/HEAD -> origin/master
remotes/origin/master abcdef [origin/master] Latest commit msg from original repo
$ git remote -v
my-fork git@github.com:MyUser/SomeAmazingRepo.git (fetch)
my-fork git@github.com:MyUser/SomeAmazingRepo.git (push)
origin git://github.com/OriginalOwner/SomeAmazingRepo.git (fetch)
origin git://github.com/OriginalOwner/SomeAmazingRepo.git (push)
我git clone --recursive
的项目开始一个新的衍生项目,当它开始递归时,它会吐出一个错误,声称它找不到这些存储库的存储提交。经检查,似乎没有添加遥控器,并且分支在 master ...
在本地文件夹中:MyProject2/Frameworks/SomeAmazingRepo/
$ git branch -vva
*master abcdef [origin/master] Latest commit msg from original repo
remotes/origin/HEAD -> origin/master
remotes/origin/master abcdef [origin/master] Latest commit msg from original repo
$ git remote -v
origin git://github.com/OriginalOwner/SomeAmazingRepo.git (fetch)
origin git://github.com/OriginalOwner/SomeAmazingRepo.git (push)
唯一的补救措施是手动将遥控器添加到所有存储库(非常乏味)。
在上面有两个跟踪分支但只有一个远程(origin => my github fork)的情况下存在类似的问题。在这种情况下,它会找到提交并检查它,但无法重新创建跟踪分支,留下一个“悬空”提交......非常可怕,因为它没有警告你!
如何克隆我的项目,以便它可靠地重新创建子模块的遥控器和分支?