2014-01-24 3 views
2

Хорошо, у нас есть хранилище с 3-мя подмодулями. Теперь мы хотим объединить эти подмодули обратно в основной репозиторий, сохраняя всю историю (ну, с использованием подмодулей оказалось больше головной боли, чем полезной). Как мы продолжим?Объединить субмодуль git в основной репозиторий

+0

Возможный дубликат [un-subodule a git submodule] (https://stackoverflow.com/questions/1759587/un-submodule-a-git-submodule) – Qw3ry

ответ

4

Допустим, у вас есть следующие файловые системы (и давайте предположим, что у вас есть только один подмодуль, чтобы просто ответ)

myRepoRoot/ 
    myMainFiles/ 
    submodule/ 

Вам просто нужно сделать

#Preparing the filesystems 
cd submomdule 
mkdir submodule 
git mv file1 file2 dir1 dir2 submodule 
git commit -am "Moved file" 

#Actually merging 
cd myRepoRoot 
git remote add sub url_to_submodule 
git fetch sub 
git merge sub/master 

Чтобы объяснить это словами : у вас есть несколько деревьев без общей фиксации, и вам просто нужно объединить эти деревья. Вот что делает вторая часть.

Первая часть необходима только для обеспечения того, чтобы файловая система подмодуля была тем, что вы могли ожидать.

+0

Я немного изменил ваше решение - у меня есть проверял все репозитории на разделение каталогов, удалял субмодули из основного репозитория, перемещал файлы в репозитории подмодулей (каталоги сиблинга в каталог основного репозитория), фиксированные изменения, в основном репозитории добавляли «удаленные» репозитории в виде таких путей, как «../submoduleA» и т. д. а затем извлекли изменения из этих каталогов и объединили их - нет необходимости вдавливать в удаленный репозиторий. – Wojtek

Смежные вопросы