Как изменить подмодуль git, чтобы указать на подпапку?

Съемка через учебник по SubModule, я создал подмодуль из проекта 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 локально и повторно вытащить?

Ответ 1

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

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

  • git fetch этот репозиторий в каталог
  • Используйте git filter-branch для обновления ветки, где подкаталог находится на верхнем уровне.
  • Добавьте эту ветвь репозитория в качестве подмодуля. Тем не менее, все это немного затруднительно, и мое предпочтение было бы просто состоять в том, чтобы иметь весь репозиторий в качестве подмодуля.

Ответ 2

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

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

Ответ 3

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

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