Как правильно удалить коммит в ветке и запушить новый?
Знаю есть много инструкций разбросанные в сети, но эти методы отличаються друг от друга..
Хочеться найти какой нибудь уникальный, професиональный метод, без вреда для себя и команды.
Нужно узнать
1) Как удалить последний коммит из ветки, сделать новый, и запушить.
2) Как удалить НЕ последний коммит из ветки, сделать новый, и запушить.
3) Как переименовать коммит, и самого автора, и запушить.
Вообщем нужен Гуру Гита, который знает все входы и выходы, кто в курсе что и как делаться, проши поделиться опытом.
А вообще вопросы слишком абстрактные. Я могу дать такой же абстрактный ответ:
1. git reset + git push
2. git rebase + git push
3. git commit + git push
Как удалить последний коммит из ветки, сделать новый, и запушить.
На гитхабе есть проект, в проекте кроме master`а есть и ветка branch_2.
В этой branch_2 сделан коммит final_commit.
Как в этом случае правильно удалить этот final_commit со всеми этими изменениями и сделать новый коммит new_final_commit.
Вот все варианты которые выдал гугл.
1)
git reset HEAD^ # remove commit locally
git commit -m "new commit" # create new commit
git push origin +HEAD # force-push the new HEAD commit
Открываем документацию и читаем чем отличается reset от reset --hard.
Там же читаем, что HEAD^ и HEAD~1 это одно и то же.
После успешного уничтожения последнего коммита, вы просто создаёте новый любым удобным способом и отправляете изменения в github так же любым удобным способом.
И, кстати, второй вариант не создаёт новый коммит.
А вообще, неплохо бы понимать что делает git, что такое коммит, что делает push и тогда ваши сложно-составные вопросы автоматически распадутся на кучу мелких и простых.
Например, нет никакого смысла в каждом вопросе повторять «и запушить». Ответ на вопрос «Как запушить изменённую историю?» никак не зависит от того как именно вы её меняли.