Значит такая ситуация, мне нужно было вернуться назад на несколько коммтов (git checkout v2.0 не создавая новую ветку), чтоб проверить что то в прошлой версии, потом я забыл про то, что откатился и сделал несколько изменений и закоммитил(git commit -m 'commit'), теперь думаю как вырезать этот последний коммит?
2 Answers
git revert [название коммита] - откатит изменения в виде следующего коммита.
Т.е., создан коммит "Mistake", при использовании revert будет создан еще один коммит "Revert mistake".
- 8,602
Если вам ещё нужны изменения, выполненные в самой последней фиксации*, то
восстановить её можно будет после переключения обратно на нужную ветку. Пока
что нужно запомнить хэш этой фиксации командой git show --format=%H HEAD.
Обозначим её вывод как $HASH.
Затем просто переключитесь обратно, к предыдущей ветке с помощью git chechout -. Если вы попали не туда, куда требовалось, укажите вашу ветку в явном виде.
Кроме того, вы можете увидеть подсказку от git с хэшем фиксации, откуда вы
только что ушли, с предложением создать новую ветку, на неё указывающую.
Затем примените ту самую фиксацию поверх нового состояния командой git cherry-pick $HASH. В результате этого, ваши изменения должны оказаться в
нужной вам ветке.
Это же описание, но в виде сценария оболочки.
HASH=$(git show --format=%H HEAD)
git checkout -
git cherry-pick $HASH
- 8,602
git reset --hard HEAD~1А вообще лучше создавайте бранчи — дёшево и практично! – 0andriy Aug 07 '17 at 18:06git reset --hard $HASH_TO, где$HASH_TO— это хэш комита, который вам нужен в итоге. Почитайте мануал в конце концов, а? – 0andriy Aug 07 '17 at 18:12