Допустим, я до сих пор совершал коммиты a, b, c, d
. Сейчас я использую d
и хочу вернуться к a
.
a
и d
находятся в ветви master
. b
и c
являются ветвью temp
.
В этом случае, если я запустил git reset --hard <a's commit>
, потеряю ли я фиксацию b
и c
, потому что они сделаны после a
? Это правда, даже если они в другой ветке?
История фиксации другой ветки (temp
) не изменится, если вы запустите команду reset
, находясь в ветке master
.
На самом деле команда reset
никогда не удалит фиксацию или не изменит содержимое ветки, которую вы еще не извлекли. Это просто перемещение указателя HEAD
.
Стоит упомянуть очень полезный инструмент - рефлог. Каждый раз, когда вы создаете фиксацию (или обновляется кончик ветки), запись сохраняется в журнале ссылок. Вы можете увидеть содержимое рефлога с помощью: git reflog
.
Итак, если вы когда-нибудь почувствуете, что «потеряли» коммит, вы можете найти его в рефлоге и вернуть обратно.