HEAD ~ 4 ^ 2 означает - PullRequest
       18

HEAD ~ 4 ^ 2 означает

0 голосов
/ 20 мая 2018

На уроке Udacity, охватывающем относительные ссылки на коммиты, говорится:

^ указывает на родительский коммит, ~ указывает на первый родительский коммит

Основное различие между ^ и~ это когда коммит создается из слияния.У фиксации слияния есть два родителя.При коммите слиянием ссылка ^ используется для обозначения первого родителя коммита, а ^ 2 - второго родителя.Первый родитель - это ветвь, на которой вы работали, когда вы запустили git merge, а второй родитель - это ветвь, которая была объединена.

Согласно уроку, основанному на следующем выводе git log --graph --oneline,commit с SHA f69811c равен HEAD~4^2 относительно (самый верхний, с указателем головы) commit 9ec05ca.

Так что HEAD ~ 4 сам по себе означает первого родителя, а ^ 2 означает, что онтоже второй родитель?Разве эти вещи не противоречат друг другу?Любые разъяснения приветствуются.

graph

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

+ Натали: Это не совсем неправильно, но это слишком коротко: поскольку оператор "~" выполняет поиск по глубине (n-й предок, который фактически соответствует n-му последнему коммиту в одной ветви), его аргумент можетне указывайте родителя, если их много.Следовательно, предполагается, что он всегда должен следовать за первым из них.Это коррелирует с другим вашим вопросом , где мы обсуждали порядок родителей.

0 голосов
/ 20 мая 2018

X~n означает: n th предок X.

X^ означает: родитель X.Это эквивалентно X~1.

Если X имеет более одного родителя, необходимо различать их при использовании обозначения ^.Так что X^1 будет первым родителем, X^2 будет вторым родителем и так далее.X^ эквивалентно X^1 (а также эквивалентно X~1).

В вашем примере, начиная с коммита 9ec05ca, который равен HEAD:

  • db7e87a равно HEAD~1 (или альтернативно HEAD^).
  • 796ddb0 равно HEAD~2 (или альтернативно HEAD^^).
  • 1a56a81 равно HEAD~4(или альтернативно HEAD^^^^, но никто бы не использовал это).
  • e014d91, являющийся первым родителем из 1a56a81, равен HEAD~5 или HEAD~4^, илиHEAD~4<b>^1</b>.
  • f69811c, являясь вторым родителем из 1a56a81, составляет HEAD~4<b>^2</b>.

Ссылка

https://git -scm.com / Docs / gitrevisions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...