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


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.