Git сбрасывается в отключенном состоянии HEAD
Я понимаю что git reset
команда перемещает ветвь назад в истории (*), и та ветвь, которую она перемещает, является той, HEAD
указывает на.
Так что мне стало любопытно, и я попытался назвать это в detached HEAD state
чтобы увидеть, что произойдет. Я ожидал ошибки, но Git что-то сделал, и я просто не могу понять, что он сделал.
Git действовал как HEAD
все еще указывал, где это было, прежде чем я проверил и вошел в detached HEAD state
?
[Правка 1 ] Я на самом деле понял это. Он делает то же самое, что и когда человек не находится в состоянии отсоединенной головы, за исключением того, что он не перемещает ни одну ветвь назад. Это только
[Редактировать 2(*) ] git reset
фактически только перемещает ветвь назад в истории при указании более старого коммита. При выполнении git reset HEAD
, он покидает ветку, где он находится (см. комментарии ниже).
3 ответа
git reset
заставляет текущую ветку и HEAD перейти к конкретному коммиту. Если это отдельная ГОЛОВА, она заставляет двигаться только ГОЛОВУ.
Просто чтобы подчеркнуть:
Я понимаю, что команда git reset всегда перемещает ветку назад в истории,
Это не правильно, и вы можете отредактировать свой вопрос, чтобы не запутывать людей, плохо знакомых с git. Например, git reset --hard
не делает этого, он просто стирает рабочий каталог и индекс без перемещения HEAD или ветви.
На самом деле, все варианты, где вы опускаете необязательный <commit>
в git reset [<commit>]
не двигайте головой или ветвью. Другие варианты git reset
делай другие вещи, не все из которых двигаются ГОЛОВОЙ. Так что перемещение головы вокруг головы - это лишь одно из нескольких действий git reset
сможет сделать.
Если вы только что запустили: git reset
Он выполняет противоположную операцию git add
что нестандартно меняется...
Есть три формы git reset
Команда, каждая из которых связана с опциями и выполняет различные операции. Проверьте на git reset docs, если хотите углубиться.