Внешний разработчик создал ветку условно [branch-1] внес в нее изменения и запушил в удаленный репозиторий.
Далее я сфечил все новые ветки и переключился на появившуюся ветку [branch-1], внес много изменений и запушил. Параллельно другие разработчики выполняли свои задачи и в конечном итогде все это смержилось в мастер, в том числе и ветка [branch-1] с моими изменениями.
Выявили баг. Просто откатит мастер не выйдет, есть риск что-то сломать т.к было затронуто много кодовой базы, фиксить в текущей версии тоже сложно. Нужно откатить ветку [branch-1] до начального состояния и запушить как есть. У меня сомнения как правильно это сделать.
1. Создать ветку от текущего мастера/дева, откатить ветку [branch-1] локально путем git reset --hard HEAD^ до нужно коммита и смержить ее в новую ветку?
2. Тоже самое, только вместо git reset переключиться к нужному коммиту по его хешу?
3. ....?
В обоих случаях не понятно что будет при пуше, так как выше есть уже накатаные изменения.
В одном уверен точно, что конкретно в этой ветке больше ничего лишнего не затрагивается и можно спокойно ее откатывать.
Дмитрий Шицков Если я правильно понял работу revert, то действует он так:
Имеем историю коммитов A - B - C - D
B,C,D - проблемные коммиты.
Ревертим до B, создается новый коммит A - B - C - D - xB, разве в C и D не сохранится код?
И что скажете про вариант если создать новую ветку от начала старой ?
git checkout -b [branch-1] [hash нужного коммита] ?
massef, вы можете отревертить сразу несколько коммитов и получить один новый A - B - C - D - xBxCxD. Посмотрите в документации по реверту. И всем сразу будет понятно, что была проблема и её откатили. История событий в целости.
Ещё раз - во всех других вариантах с ребейзом вы перепишите историю и вам потребуется форс-пуш, в т.ч. форс-пуш в мастер. Считайте это ну самой крайней мерой, практически неприменимой. Портить историю можно в свой ветке, но как только она слита с другой (общественной), а в особенности мастером - перезапись истории табу.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.