Слияние ссылок Git и head в запросе на извлечение

#git #github #pull

#git #github #тянуть

Вопрос:

refs/pull/*/ Заголовок относится к заголовку PR, но что касается refs/pull/*/merge , я не нахожу никаких коммитов git, которые отображаются как часть /merge в истории коммитов.что это /merge точно означает для PR и когда у PR есть несколько коммитов, когда PR открыт, Когда PR закрыт и т. Д

 $ git ls-remote
From git@<repo url>
01c8cd97857c21cfc5d413bd64e3c0e8cc8fd03d        HEAD
37b88346a9edb426f676d080be502a1d4349c499        refs/heads/PR1
6fda26f078c00adf518ec620e94f54daa85bb894        refs/heads/PR1-1
bd88e471db4127f066b3b2f1d699b8296ca62f6d        refs/heads/PR5
25b5eec47ca186a778c93439cd81e8a4125b5d6f        refs/heads/PR6
58a82cf11218991f8f544a14ef6c57d3963690ee        refs/heads/PR7
a5831973e1a4561527551a8bc8a9d5f9436f004b        refs/heads/Pr2
01c8cd97857c21cfc5d413bd64e3c0e8cc8fd03d        refs/heads/develop
442c0bc7f8b3872660d48cbd42690be677314b94        refs/heads/master
37b88346a9edb426f676d080be502a1d4349c499        refs/pull/1/head
2db24e8a6a53ce006694c4c5db1886df44620372        refs/pull/1/merge
a5831973e1a4561527551a8bc8a9d5f9436f004b        refs/pull/2/head
4ea1814dda65e2ca8572fbbc5da9cc8141391ab8        refs/pull/2/merge
6fda26f078c00adf518ec620e94f54daa85bb894        refs/pull/3/head
b6cde57523fc73ce08dd7e588eeb606c3f047136        refs/pull/3/merge
442c0bc7f8b3872660d48cbd42690be677314b94        refs/pull/4/head
58a82cf11218991f8f544a14ef6c57d3963690ee        refs/pull/5/head
e4a82d455b8b8e81b70dfbf4f6d79a1fb5158cbb        refs/pull/5/merge
bd88e471db4127f066b3b2f1d699b8296ca62f6d        refs/pull/6/head
e8825e286aa9c36c04046c5d4ac85c9d7a4ebf5c        refs/pull/6/merge
25b5eec47ca186a778c93439cd81e8a4125b5d6f        refs/pull/7/head
ed262d8c4766b037207f3113b634c777b3a0af37        refs/pull/7/merge
  

например

 25b5eec47ca186a778c93439cd81e8a4125b5d6f        refs/pull/7/head
ed262d8c4766b037207f3113b634c777b3a0af37        refs/pull/7/merge/
  

в чем значение ed262d8c4766b037207f3113b634c777b3a0af37 refs/pull/7/merge/
и этот идентификатор фиксации ed262d8c4766b037207f3113b634c777b3a0af37 нигде не найден

Ответ №1:

refs/pull/<number>/merge Это ссылка, созданная GitHub для отслеживания того, что произойдет, если запрос на извлечение будет объединен. Он ссылается на фиксацию слияния между refs/pull/<number>/head и целевой ветвью (например master ).

Вы можете думать об этом как о «будущей» фиксации. GitHub (а также другие платформы совместной работы на основе Git) используют этот метод, чтобы определить, будет ли запрос на извлечение успешно объединен со всеми пройденными проверками и без конфликтов слияния.

У Atlassian есть хорошее объяснение причин, лежащих в основе этой детали реализации на стороне сервера здесь:

Когда вы просматриваете запрос на извлечение, вы видите, как на самом деле будет выглядеть результирующая фиксация слияния. Мы делаем это, фактически создавая коммит слияния за кулисами и показывая вам разницу между ним и концом целевой ветви.

Очевидно, что они говорят о Bitbucket, но то же самое относится и к GitHub.

Комментарии:

1. Спасибо, Энрико, не совпадают ли оба коммита, что означает, что такое глава PR и разница между главой PR и мастером (например), в каких случаях они разные, немного запутаны

2. Также хорошо описано в Pull Requests разделе книги Pro Git.

3. Bitbucket удалил эту возможность jira.atlassian.com/browse /…