Переход к стратегии разделения репозитория поддерева

StackOverflow https://stackoverflow.com//questions/23021604

  •  21-12-2019
  •  | 
  •  

Вопрос

Наконец я понял, как создать репозиторий поддерева из моего основного репозитория с помощью Git.

Осталась одна вещь, в которой я не совсем уверен.Предположим, что «Основной» — это репозиторий, в котором хранится весь мой код, а «Общий» — это подпапка, которую я отделил от «Основной».

Когда я вношу изменения в код в своем основном репозитории, а также вношу изменения в «Общий» репозиторий, как мне действовать?

Могу ли я сначала сделать commit в репозитории «Главный», если я внес изменения как в «Основной», так и в «Общий» репозиторий?

git commit -am "Made changes to main and shared"

Должен ли я тогда ВСЕГДА сделай push сначала в репозиторий «Общий»?

git subtree push --prefix=path/to/code --squash shared master

И после этого просто нажмите «Основной» репозиторий:

git push

Должен ли я с этого момента всегда брать на себя обязательства и настаивать на этом?Или, может быть, это неправильный подход?

Это было полезно?

Решение

Нет всегда, поскольку вы можете захотеть сохранить некоторые изменения поддерева только в контексте вашего Main репо, и в этом случае простая фиксация + вставка указанного Main репо достаточно (в этом случае вам не нужно вносить свой вклад в восходящий репозиторий поддерева).

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top