У меня есть проект с несколькими подмодулями. Многие из них клонированы из вилки GitHub, к которой я добавил ветку для моих пользовательских модов. Типичная настройка выглядит следующим образом:
В локальной папке: 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 [email protected]:MyUser/SomeAmazingRepo.git (fetch)
my-fork [email protected]:MyUser/SomeAmazingRepo.git (push)
origin git://github.com/OriginalOwner/SomeAmazingRepo.git (fetch)
origin git://github.com/OriginalOwner/SomeAmazingRepo.git (push)
I git clone --recursive
мой проект, чтобы начать новый проект выделения, и когда он начинает рекурсивно, он выплевывает ошибку, заявляя, что не может найти сохраненные коммиты для этих репозиториев. При проверке кажется, что пульты не были добавлены, и ветка оставлена (пуста) в мастер...
В локальной папке: 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). В этом случае он обнаруживает фиксацию и проверяет ее, но не воссоздает ветвь отслеживания, оставляя "обвисшую" фиксацию... очень страшно, поскольку она не предупреждает вас!
Как мне клонировать мой проект так, чтобы он надежно воссоздавал модули и ветки подмодулей?