Подтвердить что ты не робот

Откат до последнего git commit

Я просто сделал

git commit -m "blah"

то я добавил некоторые файлы, как мне откат и удалить то, что находится в моих текущих файлах, которые еще не добавлены/зафиксированы?

4b9b3361

Ответ 1

Ниже ОРИГИНАЛЬНЫЙ ответ - то, что я думал, что ОП искал.

Хотя, согласно полезному комментарию от @ChrisNevill, оригинальный ответ может быть не тем, что вы ищете, и я обновил ответ, чтобы уточнить.

Nota Bene - Разрушительные команды впереди.

Смягчение последствий для Caveat Emptor - git reflog может спасти вас, если вам это нужно.


→ ОБНОВЛЕННЫЙ ОТВЕТ

1) ОТМЕНИТЬ локальные изменения файла, но НЕ УДАЛЯТЬ свой последний коммит

git reset --hard

2) ОТМЕНИТЬ локальные изменения файла и удалить ваш последний коммит

git reset --hard HEAD^

3) СОХРАНЯЙТЕ локальные изменения файлов и УДАЛЯЙТЕ ТОЛЬКО свой последний коммит

git reset --soft HEAD^

→ ОРИГИНАЛЬНЫЙ ОТВЕТ

"Сбросить рабочее дерево до последнего коммита"

git reset --hard HEAD^   

"Удалить неизвестные файлы из рабочего дерева"

git clean

Ответ 2

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

git reset --hard

Если вы хотите удалить и свою последнюю фиксацию (это тот, у кого есть сообщение "blah" ), то лучше использовать:

git reset --hard HEAD^

Чтобы удалить неиспользуемые файлы (так что новые файлы еще не добавлены в индекс) и папки используют:

git clean --force -d

Ответ 3

git reset --hard заставит рабочий каталог вернуться к последнему фиксации и удалить новые/измененные файлы.

Ответ 4

Вы можете вернуть фиксацию с помощью git revert HEAD^ для возврата к следующему фиксации. Вы также можете указать фиксацию для возврата с использованием id вместо HEAD ^

Ответ 5

Легкий безопасный способ для локального файла UNDO с момента последнего фиксации, чтобы поместить их в новую ветку:

git branch changes
git checkout changes
git add .
git commit

Это оставляет изменения в новой ветке. Вернитесь к исходной ветке, чтобы вернуть ее к последней фиксации:

git checkout master

Новая ветка - это хорошее место, где можно использовать разные способы возврата изменений без риска испортить исходную ветвь.

Ответ 6

Если вы хотите просто отключить последнюю фиксацию, используйте это:

git reset HEAD~

Работайте как прелесть для меня.