
2024-05-10
GIT как удалить коммит из master ветки
2023-08-07
Представим ситуацию, что по случайности вы сделали коммит и запушили его в ветку master, а нужно было сделать всю работу на отдельной ветке.
Теперь нужно как-то решить эту проблему.
Решается всё довольно просто.
Допустим находясь на ветке master мы уже сделали ненужный нам коммит:
Что происходит на скриншоте:
1) находясь на ветке master выполняем команду git status - проверяем, что никаких изменений нет.
Чтобы появилась возможность вызвать git lg нужно запустить следующее:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --"
2) вызываем команду git lg чтобы просмотреть коммиты ветки на которой мы находимся.
3) видим, что на ветке master всего 1 коммит.
4) создаем файл 12.txt и коммитим его в master ветку таким образом воспроизводя наш исходный кейс, что мы случайно закоммитились в master ветку.
5) снова вызываем git lg и видим уже 2 коммита - исходный коммит + тот что мы только что сделали
Теперь мы поняли, что мы хотим переместить коммит 0286b6f на другую ветку. Для этого нам надо:
1) переключиться на коммит от которого мы хотим создать новую ветку ( eace0c2 - коммит, который шел перед тем коммитом, который мы хотим переместить ) git checkout eace0c2
2) теперь от этого коммита создаем новую ветку develop командой git checkout -b develop
3) находясь на ветке develop вызываем команду git cherry-pick 0286b6f - указав номер коммита, который мы хотим перенести
4) используя git lg проверяем, что на ветке develop у нас теперь 2 коммита: первый от которого мы создали ветку и второй, который мы подтянули с помощью cherry-pick команды
5) выполняем git push --set-upstream origin develop чтобы запушить новую ветку
6) переключаемся на master, чтобы удалить ненужный коммит git checkout master
7) на master ветке выполняем git reset --hard HEAD~1 таким образом стирая коммит
8) git push -f - запушит ваши изменения в удаленную ветку мастер.
На этом всё. Теперь у вас на ветке develop находится ваш коммит, а в ветке master его нет.
Ура! Я наконец-то дописал статью как собирать собственные бандлы на Symfony 6!!!
Статья про EasyAdmin всё ещё в процессе )))
Не, ну мне же надо на чем-то тестировать твиттер локальный...
Я тут еще много полезного буду выкладывать, так что заходите обязательно почитать.
Сайтик пока что в разработке - это далеко не окончательная версия - по сути это то что удалось слепить за 8 часов.
Комментарии