Рассмотрим этот сценарий:
- Разработчик A выполняет фиксацию: #n
- Dev. B совершает # n + 1
- Dev. A совершает # n + 2
- и фиксируем # n + 3
а затем обнаруживает, что в своей фиксации № n + 2 он ввел дефект.
Как dev. Откатить его последние 2 коммита и продолжить разработку на коммите # n + 1 ?
Пробовал git reset --hard HEAD~2
* , но он возвращается к устр - х фиксации #n .
commit
# n + 1, [1] Acommit
ted # n + 2, [2] неудачноpush
, [3]pull
, [4]push
. Итак, на github теперь есть коммит (# n + 2) и ветка слияния master (# n + 3).Ответы:
Он должен вернуться к фиксации n + 1. У вас, вероятно, также есть фиксация слияния. Вы также можете сделать
git reset --hard <sha1_of_where_you_want_to_be>
источник
git reflog
, но могу получить доступ только к моей локальной информации рефлога, например коммиты #n, # n + 2, # n + 3 ... но не # n + 1git log
, ноgit push -f
также требовался a , поэтому изменения будут отражены на github.--hard
означает, что любые незафиксированные изменения, которые у вас есть в настоящее время, будут навсегда удалены. Чтобы вернуться к предыдущей фиксации без выброса вашей работы, используйте--soft
.