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

Git: возврат к предыдущему статусу фиксации

Я в замешательстве. Я хочу вернуться к предыдущей фиксации, которую я идентифицировал в "git log".

Но когда я делаю "git checkout", я не получаю сказанное сообщение. Ничего не меняется. Это говорит мне, что я в режиме ожидания HEAD, но файлы, которые я хочу, не существуют.

Что я делаю неправильно?

MRB

4b9b3361

Ответ 1

git reset --hard <commit> Из man-страницы:

Соответствует рабочему дереву и индексу по отношению к дереву, на которое переключается. Любые изменения в отслеживаемых файлах в рабочем дереве будут потеряны.

git checkout предназначен для переключения рабочего каталога на другую ветку или фиксацию. Это не перемещает HEAD там.

Ответ 2

НЕ git reset -hard, это ПОСТОЯННО!

Пожалуйста, используйте

git stash -u 

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

Кроме того, вы на правильном пути, что вы можете использовать git checkout для выполнения того же самого. Синтаксис

git checkout HEAD -- . 

Но он имеет ту же проблему, что и git reset --hard. Придерживайтесь приложением, и в будущем вы будете экономить ваши волосы.

Более длинный ответ

Вышеупомянутые решения возвращают все ваши изменения. Однако вы спросили, как избавиться от некоторых изменений. Я добавлю это для полноты.

Чтобы сделать это, вы можете

git add file1 file2 file3
git stash save --patch

Теперь вам будет предложено, что именно вы хотите сделать dissappear... вплоть до уровня детализации. Таким образом, вы можете смело "отклонить" только несколько изменений в один файл, если вы решите это сделать.