@mpvcluuuuub

Разница между @~ и @^?

В чем разница между @^ и @~ , как я это могу использовать? Например при reset или rebase
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Эти символы абсолютно идентичны. Используются для относительных ссылок назад в историю от какой либо точки.
Например git reset HEAD^3 переключит текущую ветку на три коммита назад относительно текущего состояния.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
Разница описана в документации.

В частности @^ и @~ действительно совершенно случайно выбирают одно и тоже, но у них разный смысл.

@ в данном контексте синоним HEAD.
^ (=== ^1) — выбрать первого родителя коммита. У большинства коммитов никакого другого и нет, так что числа отличные от 1 имею смысл только для merge-коммитов.
~ (=== ~1) — выбрать родителя (если их несколько, то выбирается первый).

Но, например, @^3 выбрать третьего родителя у коммита. В 99.99% случаем это будет ошибка, потому что в живой природе больше двух родителей практически не бывает.
А вот @~3 означает выбрать «пра-дедушку» коммита и это эквивалентно записи @^1^1^1 (или @^^^).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы