Потягніть запит проти запиту на об’єднання


466

Яка різниця між запитом на витягнення та запитом на об'єднання.

У Github це Puqu Request, а в GitLab, наприклад, це Requer Request ... Чи є різниця між обома ними?

Відповіді:


763

Функція "запит на об'єднання" GitLab еквівалентна функції "запит на витягнення " GitHub . І те й інше - це спосіб перетягнути зміни з іншої гілки чи вилки у вашу гілку та об'єднати зміни з існуючим кодом. Вони є корисними інструментами для перегляду коду та управління змінами.

Стаття з GitLab обговорює відмінності в іменуванні функції:

Запити на об'єднання або витягування створюються в додатку для управління git і просять призначену особу об'єднати дві гілки. Такі інструменти, як GitHub і Bitbucket, вибирають запит на виклик імені, оскільки першою ручною дією було б витягнути гілку функції. Такі інструменти, як GitLab та Gitorious, вибирають запит на об'єднання імен, оскільки це остання дія, яка вимагається від правонаступника. У цій статті ми розглянемо їх як запити на об'єднання.

"Запит на об'єднання" не слід плутати з git mergeкомандою. Не слід плутати "запит на потяг" з git pullкомандою. Обидві gitкоманди використовуються за лаштунками як у запитах на витяг, так і в запитах на злиття, але запит на об'єднання / потяг стосується набагато ширшої теми, ніж лише ці дві команди.


1
Чи створює GitHub проміжну / тимчасову гілку (невидиму), коли робиться запит на виклик?
— Роберт Коритник

1
@stevemao чи можемо ми отримати до них доступ? Чи справді вони читаються лише тоді, коли ми можемо вирішити конфлікти щодо них?
— Роберт Коритник

11
Що я пропускаю? тягнути = добувати + зливати. Якщо фінальна дія є злиттям, то перша дія повинна бути отримана.
— Вітенис Бівайніс

59
ЗМ - це просто краще назвати все навколо. Запит на виклик ніколи не мав сенсу для мене, поки я прочитав ваше пояснення, що це перша дія, в той час як я зрозумів, що означає Запит на злиття, другий я прочитав його вперше. "привіт, чи не могли б ви зв'язати цей код для оволодіння гілкою?" vs "привіт, чи можете ви перетягнути цей код до невидимої гілки для <мається на увазі злиття>" - тут явний переможець.
— Granitosaurus

7
@Granitosaurus Погодився. Як початківець, хто вислухав, запити на тягнення були абсолютно не такими, якими я їх очікував. Коли я почав використовувати Gitlab, запити на об’єднання мали сенс відразу.
— Марк Ліонс

54

Вони однакові особливості

Запити на об'єднання або витягування створюються в додатку для управління git і просять призначену особу об'єднати дві гілки. Такі інструменти, як GitHub і Bitbucket, вибирають запит на виклик імені, оскільки першою ручною дією було б витягнути гілку функції. Такі інструменти, як GitLab та Gitorious, вибирають запит на об'єднання імен, оскільки це остання дія, яка вимагається від правонаступника. У цій статті ми розглянемо їх як запити на об'єднання.

- https://about.gitlab.com/2014/09/29/gitlab-flow/


чи не повинно зливатися відповідальність розробника, який додає нову функцію? якщо розробник A додає функцію в feature_branch, він повинен взяти головну гілку і об'єднати її на своїй гілці, щоб вирішити всі конфлікти і перевірити її перед створенням запиту на об'єднання?
— Ciasto piekarz

2
Так, але все ще є швидке злиття вперед, яке потрібно зробити хтось після цього, щоб отримати код для управління. Насправді я думаю, що для команди штатних розробників це, мабуть, найкраще, якщо розробник функції також зробить це злиття, але може бути корисним зачекати, коли хтось спочатку перегляне їхній PR.
— bdsl

21

На мій погляд, вони означають ту саму діяльність, але з різних точок зору:

Подумайте над цим, Аліса робить деякі зобов’язання у сховищі А, яке було роздвоєне з сховища Б. Боба.

Коли Аліса хоче "злити" свої зміни в B, вона насправді хоче, щоб Боб "витягнув" ці зміни з А.

Тому, з точки зору Аліси, це "запит на злиття", а Боб розглядає це як "запит на потяг".


Це нагадало мені той приклад, коли я робив невеликий звіт, щоб повідомити іншим колегам про те, як працює git.
— Раві Ядав

4

Існує тонка різниця в плані управління конфліктами. У разі конфліктів, запит на виклик у Github призведе до злиття комісії у відділенні призначення . У Gitlab, коли буде знайдено конфлікт, внесені модифікації будуть накладені на об'єднання у вихідній гілці.

Дивіться https://docs.gitlab.com/ee/user/project/merge_requests/resolve_conflicts.html

"GitLab вирішує конфлікти, створюючи комісію злиття у вихідній гілці, яка не автоматично об'єднується у цільову гілку. Це дозволяє переглядати та перевіряти об'єкт злиття перед об'єднанням змін, запобігаючи ненавмисним змінам входити до цільової гілки без огляду чи порушення збірка ".


3

GitLab 12.1 (липень 2019 року) представляє різницю:

" Запити на об'єднання конфіденційних питань "

Під час обговорення, планування та вирішення конфіденційних питань, таких як вразливості безпеки, для проектів з відкритим кодом може бути особливо складним, щоб залишатися ефективними, оскільки сховище Git є загальнодоступним.

https://about.gitlab.com/images/12_1/mr-confidential.png

З 12.1 тепер конфіденційні проблеми в публічному проекті можуть бути вирішені в межах обтічного робочого процесу за допомогою кнопки Створити конфіденційний запит на об'єднання, яка допоможе вам створити запит на об'єднання в приватному вилку проекту.

Див. " Конфіденційні питання " з номера 58583 .

Аналогічна особливість існує в GitHub, але передбачає створення спеціального приватного вила, який називається " консультант з безпеки безпеки ".


0

Як було сказано в попередніх відповідях, обидва служать майже однаковою метою. Особисто мені подобається git rebase та запит на злиття (як у gitlab). Він знімає навантаження з рецензента / технічного обслуговування, переконуючись, що додаючи запит на об'єднання, галузь функції включає всі останні комісії, зроблені на головній гілці після створення гілки функції. Ось дуже корисна стаття, яка детально пояснює ребауз: https://git-scm.com/book/en/v2/Git-Branching-Rebasing

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.