Git reset --hard не работает должным образом
Я пытаюсь проверить историю хранилища. Я остановился на том этапе, когда хочу вернуть репозиторий обратно в конкретный коммит. Я искал и сделал
git reset --hard 12345
Я получил сообщение, что HEAD сейчас 12345. Я открыл папку, чтобы увидеть файл, который хотел увидеть, но он не изменился!
Я хотел вернуться в 2009 год, когда этот файл был впервые создан. Однако файл был в новой версии (после редактирования в 2010 году).
Я проверил рабочий каталог, но ничего там. Я тоже побежал
git clean -f -d
но ничего не изменилось.
Я не знаю, что мне теперь делать. Я хочу вернуться во времени, чтобы посмотреть, как выглядели файлы, но я хочу вернуться ко всему хранилищу.
2 ответа
Честно говоря, я не понимаю, что случилось с вашим репо после того, как вы сделали
git reset --hard 12345
Следует подчеркнуть, что вы обычно должны избегать команды "git reset --hard". Риск состоит в том, что вы потеряете любые незафиксированные изменения, которые у вас были, а также в конечном итоге будете зависать. Вы бы действительно использовали эту команду, если хотите отбросить все коммиты, которые были сделаны после коммита 12345. Я предлагаю вам прочитать эту ветку о git reset --hard
В вашем случае, я бы на самом деле создал временную ветку "temp_branch", которая указала бы на коммит 12345. Команда была бы
git checkout -b temp_branch 12345
Это переключит репо на новую ветку "temp_branch", чей HEAD будет 12345. Создание новой ветки не является обязательным, но я считаю удобным, если мне нужно внести изменения в этот коммит.
Для меня я не stage
файлы, поэтому git reset --hard
не работал у меня,
я просто выполнил следующую команду
git add .
=> для обработки всех файлов (не игнорируйте.
)
git reset --hard
=> для сброса всех изменений
Если все, что вы хотите сделать, это посмотреть содержимое при коммите, не используйте сброс. Сброс предназначен для перемещения веток, и вы можете попасть в неприятности таким образом. Просто проверьте это, git checkout 12345
, Затем вы можете снова использовать checkout, чтобы вернуться туда, где вы были, git checkout master
(или любая другая ветка).
Что касается того, что ваш файл не изменяется, вы уверены, что он отличается в этом коммите? Проверить с git diff 12345 branch_name -- filename
,