678просмотров
30 января 2026 г.
Score: 746
Бывает кейс когда необходимо организовать работу 2-х репозиториев через обмен git bundle и чтобы это сделать нужна корневая точка с которой будет делаться первый бандл. При этом вам бы не хотелось передавать всю историю разработки в вашем репозитории, а исходную точку сделать надо, да еще чтобы история все-таки осталась в репозитории хоть в каком-то виде (например для трассировки требований в gittlab и связи коммитов и тикетов) В таком случае можно использовать следующий вариант c подменой ветки main и историей во второй ветке. Создаем ветку с которой начнется новая история: git checkout <tag|commit>
git checkout --orphan crop-main
git add . git commit -a "Init commit" Далее текущая main ветка переименовывается в main-history: git branch -m main main-history Обрезанную ветку делаем основной: git checkout crop-main
git branch -m main Переноси нужные коммиты в новый main: git cherry-pick <tag|commit>..main-history После этого пушим 2 ветки в origin и получается урезанная копия основной ветки, но при этом во второй есть вся история изменений. Так что может кому пригодится такой лайвхак