Fork me on GitHub

Способы решения проблем при некоректном коммите

источник: 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

social