источник: https://ru.hexlet.io/blog/posts/oh-shit-git
- удаление коммитов начиная с выбранного
git reflog
# ты увидишь список всех действий во всех ветках
# у каждой есть индекс HEAD@{index}
# найди тот, после которого ты все поломал
git reset HEAD@{index}
# волшебная машина времени
- Сделал коммит, но забыл кое что
# сделай что хотел
git add . # или добавляй файлы по одному
git commit --amend
# теперь измени или оставь старое сообщение коммита
# теперь твой последний коммит включает то новое изменение!
- Исправить сообщение в коммите
git commit --amend
- Случайно сделал коммит в мастер, а не в другую ветку
# создай новую ветку на основе мастера
git branch some-new-branch-name
# удали последний коммит из мастера
git reset HEAD~ --hard
git checkout some-new-branch-name
# теперь тот коммит в новой ветке! :)
- Сделал коммит в другую ветку
# отмени последний коммит, но оставь изменения
git reset HEAD~ --soft
git stash
# перейди в нужную ветку
git checkout name-of-the-correct-branch
git stash pop
git add . # или добавь файлы по одному
git commit -m "your message here"
# теперь изменения в нужной ветке
- про diff
git diff --staged
Git показывает изменения в diff только для тех файлов, которые еще не добавлены в staging area (еще не сделан git add). С флагом --staged будет показывать diff для добавленных файлов.
Удалить локально последний коммит
#Удалить его локально
git reset HEAD~1 --hard
#Сделать force push на сервер
git push -f
Сделать force push на сервер git push -f