Сопровождающий конкретного (встроенного) репозитория ядра Linux изменил кучу древних коммитов, чтобы очистить историю.Как следствие, все коммиты имеют разные SHA.
Когда я получаю git fetch из этой переписанной истории, мне нужно переместить мою локальную ветвь (и) в локальную точку входа ветки отслеживания, которая соответствуетуказать в местном дереве, где мои собственные ветви начинаются.Стандартное решение:
git rebase --onto SHAxx master ownbranch
(SHAxx соответствует c2 для удаленных / источника / мастера на приведенном ниже графике).
Однако, когда у меня есть несколько собственных веток, в которых один единственный предок находится в masterЯ должен применить ребаз для каждой отдельной ветви.Вместо этого я хочу перенести все ветви с любыми связанными тегами в новую точку входа в выбранной ветви отслеживания одним действием.
Графически, состояние после выборки, перед любым действием (упрощено - за пределами слева глубокоmaster history):
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.)
Если быть точным: когда моя собственная работа начинается с master commit c2, я хочу перебазировать свое собственное поддерево со всеми его тегами (если оно есть) одним действием на c2 'пульта/ origin / master (с его отличным SHA по сравнению с c2 мастера).
В то время я могу полностью удалить master и сделать удаленные / origin / master новым 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) в мою собственную (зависящую от платы) ветвь.
Или есть другой / лучший подход для достижения того же результата?
Возможное решение представлено на Перебазирование ветви, включаяng все его дочерние элементы , но теги не перемещаются.