Git "Родословная Ссылки" - PullRequest
0 голосов
/ 17 декабря 2018

Мне трудно понять, как эта штука работает в git, кто родитель, а кто прародитель.Кроме того, в чем разница между ^ и ~ в Git.

* 9ec05ca (HEAD -> master) Revert "Set page heading to "Quests & Crusades""
* db7e87a Set page heading to "Quests & Crusades"
*   796ddb0 Merge branch 'heading-update'
|\  
| * 4c9749e (heading-update) Set page heading to "Crusade"
* | 0c5975a Set page heading to "Quest"
|/  
*   1a56a81 Merge branch 'sidebar'
|\  
| * f69811c (sidebar) Update sidebar with favorite movie
| * e6c65a6 Add new sidebar content
* | e014d91 (footer) Add links to social media
* | 209752a Improve site heading for SEO
* | 3772ab1 Set background color for page
|/  
* 5bfe5e7 Add starting HTML structure
* 6fa5f34 Add .gitignore file
* a879849 Add header to blog
* 94de470 Initial commit

А как на это ответить?

Ты так хорошо справился с последним, почему бы тебе не попробовать!Используя тот же репозиторий, на коммит ссылается HEAD ~ 4 ^ 2?

1 Ответ

0 голосов
/ 17 декабря 2018

Мне трудно понять, как эта штука работает в git, кто родитель, а кто дедушка.Кроме того, в чем разница между ^ и ~ в Git.

Первое, что нужно запомнить, это то, что ^ относится только к родителям, а ~ относится к предкам.COMMIT^2 относится ко второму родителю коммита, а COMMIT~2 относится ко второму предку.

Parents

Простой коммит в git имеет только одного родителя, тогда как коммит слиянияесть как минимум два.Итак, в вашем примере commit 796ddb0 имеет двух родителей:

                         * 9ec05ca (HEAD -> master) Revert "Set page heading to "Quests & Crusades""
                         * db7e87a Set page heading to "Quests & Crusades"
                         *   796ddb0 Merge branch 'heading-update'
                         |\  
THIS IS PARENT #2 -->    | * 4c9749e (heading-update) Set page heading to "Crusade"
THIS IS PARENT #1 -->    * | 0c5975a Set page heading to "Quest"

796ddb0^1 относится к 0c5975a, потому что мы считаем родителей начиная слева.796ddb0^2 относится к 4c9749e.

Предки

Предком является любой коммит на пути между указанным коммитом и корнем вашего репозитория, всегда следующий за первым родителем в случае, есликоммит имеет несколько родителей.Поэтому, если бы мы пометили предков HEAD в первой части вашего примера, мы бы получили:

        * 9ec05ca (HEAD -> master) Revert "Set page heading to "Quests & Crusades""
HEAD~1   * db7e87a Set page heading to "Quests & Crusades"
HEAD~2   *   796ddb0 Merge branch 'heading-update'
         |\  
         | * 4c9749e (heading-update) Set page heading to "Crusade"
HEAD~3   * | 0c5975a Set page heading to "Quest"
         |/  
HEAD~4   *   1a56a81 Merge branch 'sidebar'

Наконец

Мы можем разбить HEAD~4^2 надве операции:

  • HEAD~4 относится к фиксации 1a56a81.Это коммит слияния с двумя родителями, поэтому ...
  • 1a56a81^2 относится к f69811c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...