Pull to refresh

Готовим git reset правильно

Reading time 2 min
Views 39K
Очень короткая заметка из серии «Хозяйке на заметку».

Предисловие


У плохо организованных разработчиков, типа меня, часто так бывает, что накомитишь всякого, а потом оказывается что не то и не туда, но git помнит всё и весь этот разгул анархии остаётся в истории.
Мне всегда казалось что это можно исправить, но сколько раз я не начинал искать ответа на этот вопрос — как в git удалить камиты — столько раз мне это не удавалось.
А всё потому что мои поиски приводили меня к rebase, а надо было искать reset.
На мой вкус вопрос недостаточно освещён и моя заметка призвана закрыть этот пробел.

Алгоритм


  1. git status // проверяем что у нас актуальная версия
  2. git log // ищем камит к которому мы хотим откатиться
  3. sudo git reset --hard 7bcdf46b14b2dacc286b0ad469d5f9022d797f68 // указываем камит начиная с которого нам надо забыть наши изменения, при этом из локальной ветки все камиты с указанного будут забыты — удалены
  4. git push --force origin feature/draft // заливаем локальную ветку в оригинальную (ветку сервера) — из оригинальной ветки будут удалены все «лишние» камиты
  5. Победа !

Если есть более правильный способ, то прошу озвучить в коментах.

PS
На самом деле камиты из репозитория не удаляются, удаляется связь этих камитов с деревом изменений, таким образом эти камиты пропадают из ветки, но git помнит всё.

PS2
Более правильного способа не нашлось ( вариации с rebase не более чем вариации ).
Но у товарищей которые считают, что в жизни всё всегда происходит одинаково и поэтому всегда надо действовать единственным правильным образом крышу сорвало от такого вольго обращения с репозиторием.

Товарищи!
Для каждой задачи свои инструменты и свои методы, иногда и git reset — годный метод, особенно когда ты на проекте один разработчик и ты хочешь откатить камиты за последние два часа работы в своей feature ветке.
Tags:
Hubs:
-51
Comments 34
Comments Comments 34

Articles