Как я могу раскрыть мой последний коммит в git?
Это
git reset --hard HEAD
или
git reset --hard HEAD^
Как я могу раскрыть мой последний коммит в git?
Это
git reset --hard HEAD
или
git reset --hard HEAD^
Если вы не совсем уверены в том, что вы подразумеваете под "uncommit" и не знаете, хотите ли вы использовать git reset
, см. "Возврат к предыдущему Git commit".
Если вы пытаетесь понять git reset
лучше, см. "Можете ли вы объяснить, что означает "git reset" на простом английском языке?".
Если вы знаете, что хотите использовать git reset
, все равно зависит от того, что вы подразумеваете под "uncommit". Если все, что вы хотите сделать, это отменить акт совершения, оставив все остальное неповрежденным, используйте:
git reset --soft HEAD^
Если вы хотите отменить акт совершения и все, что вы поставили, но оставьте рабочее дерево (ваши файлы нетронутыми):
git reset HEAD^
И если вы действительно хотите полностью его отменить, выбросить все незафиксированные изменения, сбросив все до предыдущего фиксации (в качестве исходного вопроса):
git reset --hard HEAD^
Оригинальный вопрос также спросил его HEAD^
not HEAD
. HEAD
относится к текущей фиксации - как правило, к кончику выделенной ветки. ^
- это обозначение, которое может быть привязано к любому спецификатору фиксации и означает "фиксация до". Таким образом, HEAD^
является фиксацией перед текущим, так же как master^
является фиксацией перед концом главной ветки.
Здесь часть git -rev-parse documentation, описывающая все способы указания коммитов (^
- это просто основной среди многих).
Чтобы сохранить изменения от фиксации, которую вы хотите отменить
git reset --soft HEAD^
Чтобы уничтожить изменения от фиксации, которую вы хотите отменить
git reset --hard HEAD^
Вы также можете сказать
git reset --soft HEAD~2
чтобы вернуться 2 коммита.
Изменить: как упоминалось в charsi, если вы находитесь в Windows, вам нужно будет поместить HEAD или передать хэш в кавычки.
git reset --soft "HEAD^"
git reset --soft "asdf"
Это последнее.
git reset --hard HEAD^
, если вы хотите также отбросить сделанные вами изменения. git reset --soft HEAD^
сохранит измененные изменения в рабочем дереве.
Будьте осторожны, reset --hard
также удалит ваши локальные (незафиксированные) модификации.
git reset --hard HEAD^
Примечание: если вы находитесь в окнах, вам нужно будет указать HEAD ^ так
git reset --hard "HEAD^"
Просто заметьте - если вы используете ZSH и видите ошибку
zsh: no matches found: HEAD^
Вам нужно избежать ^
git reset --soft HEAD\^
Если вы еще не нажали свои изменения, используйте git reset --soft [Hash for one commit]
для отката к определенной фиксации. --soft
сообщает git, чтобы изменения были отменены (т.е. пометить файлы как измененные). --hard
сообщает git удалить отложенные изменения.
Если вы зафиксируете неверную ветвь
Пока на неправильной ветке:
git log -2
дает хэши 2 последних коммитов, скажем $prev
и $last
git checkout $prev
проверка правильности фиксацииgit checkout -b new-feature-branch
создает новую ветку для функцииgit cherry-pick $last
исправляет ветку с вашими изменениямиЗатем вы можете выполнить один из методов, предложенных выше, чтобы удалить фиксацию из первой ветки.
Будьте осторожны с этим.
Но вы можете использовать команду rebase
git rebase -i HEAD~2
A vi
откроется, и все, что вам нужно сделать, это удалить строку с фиксацией. Также можно прочитать инструкции, которые были показаны в правильной редакции @ vi
, в этом режиме можно выполнить пару действий