Как изменить подмодуль git, чтобы он указывал на подпапку? - PullRequest
86 голосов
/ 14 марта 2011

Пролистывая учебник по подмодулям , я создал подмодуль из проекта boto . Затем я обнаружил, что на самом деле мне нужна только часть этого проекта, а именно папка boto .

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

[submodule "backup/src/boto"]
    path = backup/src/boto
    url = https://github.com/boto/boto.git

Какой URL-адрес следует использовать вместо https://github.com/boto/boto.git? После того, как я изменил URL-адрес, нужно ли локально удалить папку boto и повторить извлечение?

Ответы [ 3 ]

57 голосов
/ 14 марта 2011

Боюсь, что URL для субмодулей всегда просто указывает на репозиторий - вы не можете указать, что вам нужна только подпапка репозитория, точно так же, как git вообще не поддерживает "узкие клоны".

Если вы не можете использовать весь репозиторий в качестве подмодуля, вы всегда можете создать новый репозиторий, клонированный из boto, а затем настроить задание cron на:

  1. git fetch этот репозиторий в каталог
  2. Используйте git filter-branch, чтобы обновить ветку, в которой подкаталог находится на верхнем уровне.
  3. Добавить эту ветвь хранилища как подмодуль.Тем не менее, это все немного странно, и я бы предпочел, чтобы весь хранилище было подмодулем.
21 голосов
/ 14 марта 2011

Вы не можете клонировать только часть хранилища.Это связано с тем, что git рассматривает хранилище как целый объект: когда вы его получаете, вы получаете его all .

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

13 голосов
/ 15 марта 2011

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

Надеюсь, это поможет.

...