Как я могу отменить последнюю фиксацию и сохранить изменения? - PullRequest
3 голосов
/ 06 сентября 2011

У меня уже есть несколько коммитов, и мне нужно отменить последний, но чтобы изменения были внесены в него. Пожалуйста, совет, как это сделать. Спасибо.

Ответы [ 2 ]

8 голосов
/ 06 сентября 2011
git reset --soft HEAD^

Обратите внимание, что вам следует перематывать ГОЛОВУ, только если она еще не нажата.


edit В ответ на ваш комментарий к исходному вопросу:

Если вы хотите редактировать только самый последний коммит, у Git есть замечательная функция commit --amend.Просто используйте git add / git rm / git checkout, пока ваш индекс не будет в том состоянии, в котором вы хотите его видеть (добавлены новые изменения, некоторые изменения удалены, файлы удалены,…).Затем используйте git commit --amend, появится vi (или все, что вы настроили в core.editor) с сообщением о коммите вашего последнего коммита, которое вы можете редактировать.

Обратите внимание, что когда я говорю ›редактировать самый последнийcommit ‹, Git фактически создает новый коммит.Так что не делайте этого, когда фиксация уже была получена от других людей (т.е. отправлена ​​в ваш публичный репозиторий)

3 голосов
/ 06 сентября 2011

Если вы хотите обновить самый последний коммит , то внесение изменений в этот коммит сделает эту работу:

<do the changes you want to>
git add <missing files>
git add <changed files>
git commit --amend

Вот и все.

Если вам нужно изменить комментарий и добавить некоторые другие файлы к предыдущему коммиту , я предлагаю вместо этого сделать интерактивное восстановление .

<do the changes you want to>
git add <missing files>
git commit -a
git rebase -i HEAD~3

В появившемся редакторе вы увидите что-то вроде

pick <SHA1> Commit that you wanted to change
pick <SHA2> Next commit that you seem to try to rollback in your question
pick <SHA3> Just committed fixes to SHA1

Измените его на

pick <SHA1> Commit that you wanted to change
f <SHA3> Just committed fixes to SHA1
pick <SHA2> Next commit that you seem to try to rollback in your question

(«f» означает «исправление» - сквош SHA1 и SHA3 и сообщение об отмене фиксации SHA3)

Сохранить изменения, выйти из редактора. Вы сделали.

Этого никогда не следует делать для коммитов, которые вы уже выдвинули вверх по течению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...