Сопровождающий репозитория конкретного (встроенного) ядра Linux изменил кучу старых коммитов, чтобы очистить историю. Как следствие, все коммиты имеют другой SHA.
Когда я использую git fetch из этой перезаписанной истории, мне нужно перебазировать мою локальную ветку (-а) на точку входа локальной ветки отслеживания, которая соответствует точке в местное дерево, где начинаются мои собственные ветви. Стандартное решение:
git rebase --onto SHAxx master ownbranch
(SHAxx соответствует c2 удаленных / origin / master на графике ниже).
Однако, когда у меня есть несколько собственных веток, у которых есть один единственный предок в master, я должен применить rebase для каждого индивидуальное отделение. Вместо этого я хочу перенести все ветки с любыми связанными тегами в новую точку входа в выбранной ветке отслеживания одним действием.
Графически, состояние после выборки, перед любым действием (упрощенно - за левым краем находится глубокая основная история) :
c1'--c2'--c3'--c4'--c5'--c6'--c7--c8--c9 remotes/origin/master
/
--o--c1--c2--c3--c4--c5--c6 master
\
o---o---o---o---o branch1
\
o---o branch2 (etc.)
Если быть точным: когда моя собственная работа начинается с основного коммита c2, я хочу перебазировать собственное поддерево со всеми его тегами (если они есть) одним действием на c2 'удаленного / origin / master (с его отдельным SHA по сравнению с мастером c2).
В то время я могу полностью удалить мастер и сделать remotes / origin / master новым мастером своей собственной работой:
c1--c2--c3--c4--c5--c6 (old master, not referenced anymore)
/
--o--c1'--c2'--c3'--c4'--c5'--c6'--c7--c8--c9 master = remotes/origin/master
\
o---o---o---o---o branch1
\
o---o branch2 (etc.)
Затем я бы проверил, дает ли процесс сборки тот же результат, что и раньше и если все в порядке: приступить к постепенному слиянию основных обновлений (например, для каждого шага субиндекса nn в 2.6.nn) в мою собственную (специфичную для платы) ветку.
Или есть другой / лучший подход для реализации того же результата?
Возможное решение представлено на Перебазирование ветки, включая все ее дочерние элементы , но теги не перемещаются.