Фиксация подмодуля Git

#git #github #git-submodules #git-clone

#git #github #git-подмодули #git-клонирование

Вопрос:

У меня есть проект Foo с собственным репозиторием. Сегодня я добавляю существующий проект в свое решение: копирую все файлы из загруженных источников нового проекта Bar (не моего репозитория) и устанавливаю ссылку в VisualStudio (она компилируется Bar лучше Foo , чем).

Теперь я кое-что меняю в скопированном Bar проекте и в моем Foo проекте. Перейдите в раздел «Расширения Git» и обнаружил, что новый проект Bar включен в мой проект Foo как подмодуль, как и ожидалось.

Я фиксирую все изменения в local и origins для Foo. В котором я хочу зафиксировать все изменения Bar , но я помню — это не мой проект (я его не клонировал). Я могу фиксировать изменения только локально. Если я пытаюсь извлечь изменения, это должно быть похоже на «Запрос на извлечение» к автору Bar проекта.

Что мне нужно сделать, чтобы не удалять / повторно копировать Bar проект? Мне просто нужно клонировать его из репозитория author, чем изменять настройки в скопированной папке с repo (изменить origin с author’s на my) и зафиксировать изменения в моем origin.

Как я могу это сделать? Спасибо.

Ответ №1:

Если я могу перефразировать вопрос, получается:

  • Я написал проект ($ mine) и решил сделать какой-то другой проект ($ theirs) подмодулем.
  • Затем я изменил $ theirs и зафиксировал эти изменения в своей копии их репозитория.
  • Теперь я хотел бы опубликовать копию моего репозитория ($ mine) вместе со ссылкой на мою модифицированную версию их проекта ($ theirs mods), но без публикации копии моего модифицированного-$ theirs, поскольку они еще не включили мои изменения.

Ответ таков: «это невозможно с подмодулями». Ваш подмодуль должен указывать на общедоступный репозиторий, содержащий конкретный идентификатор фиксации. Поэтому вы должны либо дождаться, пока они включат ваши изменения, чтобы в $theirs был коммит, который вы могли бы использовать, либо опубликовать свой собственный раздвоенный вариант $ theirs, чтобы был общедоступный репозиторий, содержащий коммит, который вы можете использовать.

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