Подтвердить что ты не робот

Редактирование подмодуля git

Возможно ли это? Представьте, что у меня есть проекты "Родитель и ребенок". Оба являются репозиториями git. Ребенок - это подмодуль родителя.

Могу ли я внести изменения в версию Child, которая находится внутри родителя, и зафиксировать и направить их точно так же, как обычный репозиторий?

Или мне нужен отдельный клон Child где-то, в который я вношу изменения?

Спасибо.

4b9b3361

Ответ 1

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

Git отлично.: -)

BTW, родительский репозиторий будет даже обнаруживать, когда изменения происходят внутри папки подмодуля и предлагают вам зафиксировать текущее состояние подмодуля в качестве новой официальной контрольной точки для клонов родительского репо.

Важное примечание:

Перед началом взлома убедитесь, что вы делаете git checkout master (или какую-либо другую ветку) внутри папки подмодуля.

Затем также убедитесь, что когда вы зафиксируете обновленное состояние подмодуля, вы либо push, которые совершают публичное репо, или, по крайней мере, что вы не переустанавливаете или иным образом не изменяете историю внутри суб- модуль впоследствии - поскольку это приведет к повреждению родительской ссылки на историю подмодуля.

Протереть с осторожностью. (Подсказка для шляпы @pjmorse для напоминания.)

Bottomline:

Да. Разработка в папке подмодуля возможна и часто удобна, но не без ее рисков. Выберите разумную модель разработки

Ответ 2

В соответствии с документацией:

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

Насколько я могу судить, если вы работаете над веткой, где был добавлен подмодуль, вы можете редактировать Child и вернуться в свой репозиторий. Но если вы не разработчик, который добавил Child to Parent, вы работаете с отдельной головой и вам нужно либо проверить отдельную версию Child для внесения изменений, либо внести изменения и экспортировать исправления (используя git format-patch) для кого-то другого (через git am).