Удаляет ли команда "git reset --hard <commit>" историю коммитов в другой ветке?

Допустим, я до сих пор совершал коммиты a, b, c, d. Сейчас я использую d и хочу вернуться к a.

a и d находятся в ветви master. b и c являются ветвью temp.

В этом случае, если я запустил git reset --hard <a's commit>, потеряю ли я фиксацию b и c, потому что они сделаны после a? Это правда, даже если они в другой ветке?


4
756
1

Ответ:

Решено

История фиксации другой ветки (temp) не изменится, если вы запустите команду reset, находясь в ветке master.

На самом деле команда reset никогда не удалит фиксацию или не изменит содержимое ветки, которую вы еще не извлекли. Это просто перемещение указателя HEAD.

Стоит упомянуть очень полезный инструмент - рефлог. Каждый раз, когда вы создаете фиксацию (или обновляется кончик ветки), запись сохраняется в журнале ссылок. Вы можете увидеть содержимое рефлога с помощью: git reflog.

Итак, если вы когда-нибудь почувствуете, что «потеряли» коммит, вы можете найти его в рефлоге и вернуть обратно.