#git #git-reset
#git #git-сброс
Вопрос:
Я использую git reset для перехода назад в моем дереве git; однако, за исключением времени, когда я использую --hard
option, мои файлы не возвращаются к своим более ранним версиям. В качестве примера я создал файл с именем f1.txt и в каждом коммите я добавлял к нему символ, но когда я использую git reset --mixed
git reset --soft
команды или, они не меняют содержимое f1.txt и все символы на месте (хотя, когда я использую git log
, я вижу, что ГОЛОВА откинулась назад).
Комментарии:
1. Вот как
git reset
это работает. Подробнее оgit reset
. Как следует из ответов, вы, вероятно, захотите использоватьgit switch
илиgit checkout
(если вы используете версию Git старше 2.23).
Ответ №1:
Вы не можете использовать git reset
для навигации по вашему дереву.
git reset
сбросит «этап» (то, что зафиксировано при вас git commit
). Так что, если вы это сделаете git add
и захотите отменить это, вы используете git reset
.
Если вы это сделаете git reset --hard HEAD
, это также приведет к сбросу файла в состояние HEAD
.
Для навигации по дереву вам необходимо использовать git checkout <branch/commit>
. Если вы не хотите извлекать коммит, а просто получить один файл из предыдущего коммита, вы можете это сделать git checkout <branch/commit> -- path/to/file
.
Проверьте документы:
Комментарии:
1. Ну, технически, вы можете использовать
git reset
этот способ, но это немного похоже на использование pogo-stick с ядерным двигателем для передвижения, вместо того, чтобы ходить, водить машину или что-то еще. Грубо на теле. 🙂2. да, я понимаю, что git reset не является подходящей командой для навигации, но мой вопрос в основном касается параметров, которые используются с git reset. Когда мы используем —hard, мы видим изменения в наших файлах; однако при использовании —mixed или —soft наши файлы будут такими же, как при последней фиксации.
3. Да, это то, что
--hard
делает. Это изменяет фактические файлы. В противном случае это меняет только то, что является «поэтапным».4. @amiref это отвечает на ваш вопрос? Если это так, принятие будет высоко оценено 😉
Ответ №2:
Я думаю, вам лучше использовать git checkout
than git reset
для навигации. Вы можете использовать git checkout
с фиксацией SHA1.