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, если хотите углубиться.

Другие вопросы по тегам