Ничего плохого.Это именно то, как работает Git.Git rebase - это не что иное, как маленький робот, который делает новую версию группы коммитов.
Это просто плохая формулировка, что некоторые люди, даже доктора, говорят о «переписывании истории».Переписывание истории вообще невозможно в git - то, что когда-то было совершено, никогда не может быть изменено снова.git rebase помогает только копировать старую историю в новую версию истории.Однако - если старая история, как и в вашем случае, имеет другие теги или ветви, они будут продолжать указывать на старую историю даже после перебазирования.
Так что это совершенно нормальночто репозиторий git состоит из множества мертвых веток.Иногда вы можете видеть их (потому что другие теги / ветви все еще ссылаются на них), иногда вы не можете видеть их, но вы всегда можете обратиться к ним, если вам удалось запомнить идентификатор SHA.(Время от времени приходит сборщик мусора git и собирает действительно мертвые части истории, на которые ничто не указывает).
Это здорово, потому что вы не можете делать никаких ошибок (1).Вы всегда можете просто git reset --hard
до некоторой точки в истории, потому что история никогда не может быть изменена в git.Если вы попытались выполнить перебазирование, слияние или что-то еще, и это не сработало, как ожидалось - если вы запомнили SHA, которым вы были раньше (или если вы пометили его), вы можете вернуться туда.(Если вы этого не сделали, вы можете найти его по git reflog
).И у вас всегда есть пара дней, чтобы сделать это перед сборкой мусора.
Очевидно, что это плохо для вас, потому что у вас есть много тегов, которые вы также хотите указать на новую историю.Я немного погуглил, могут быть инструменты, чтобы перенести их в новую ветку, но я никогда не использовал такой инструмент.Попробуйте или примите это как факт, что у git неизменная история.Возможно, когда-нибудь вам понравится, что вы можете экспериментировать без всякого риска: -)
(1) Единственный способ действительно потерять работу - это внести изменения в ваш рабочий каталог и не фиксировать их,Если вы внесли незафиксированные изменения и внесли reset --hard
, они будут навсегда потеряны, и никто не предупредит вас.