Страницы

Поиск по вопросам

понедельник, 26 ноября 2018 г.

Удалить ненужные коммиты

Есть вот такой перечень коммитов.
коммит 5 коммит 4 коммит 3 коммит 2 коммит 1
Хочу удалить коммиты 5, 3 и 2. Т.е не просто убрать их видимость в ветке, а удалить насовсем. Можно ли это сделать с сохранением коммита 4?


Ответ

Для подобного действия Вам нужен интерактивный rebase. Если кратко, тогда так
вначале нужно его запустить
git rebase -i HEAD~6
Вместо HEAD~6 (шесть коммитов назад), можете взять хеш любого коммита перед коммитом 1. Откроется вим или другой редактор. Там будет список коммитов. Теперь удаляем ненужные коммиты (просто удаляем строки). Если это вим, тогда просто нажимаем дважды d на нужных строках (то есть тех, которых нужно удалить).
Потом выходим с редактора (если это вим - Esc wq).
После этого git откатит эти коммиты и накатит их по новому. Вполне возможно, что нужно будет по ходу дела решать конфликты.
Помните, что на самом деле старые коммиты никуда не уйдут, просто будут созданы новые коммиты.
Если эти коммиты уже были запушены на удаленный сервер, то лучше не делать подобного. Но если над проектом работаете только Вы, то нет ничего страшного. Но пуш придется делать форсированным (-f).

Комментариев нет:

Отправить комментарий