Чому git "pull request" не називається "push push"?


451

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

Чому його називають запитом на виклик, а не на запитом про push?


45
Зобразіть велике, живе дерево. Дерево занадто міцне, щоб вам вдавити гілку, натомість потрібно попросити дерево витягнути гілку у стовбур, зміцнивши її.
Лука


2
Якщо використовується віддалене сховище типу gitihub, одна з останніх команд, яку підтримує виконати, виконує запит через командний рядок git push. Мені це все говорить ... (так, вони можуть випустити git pull, потім git push, але просити поштовх було про те, і це в кінцевому підсумку робиться)
ebyrob

62
GitLab називає їх merge requests. Набагато чіткіше, ІМХО. :)
U007D

Відповіді:


377

Якщо у вашому сховищі є зміна коду та ви хочете перемістити його в цільове сховище, то:

  • "Натиснути" - це ви змушуєте зміни, наявні в цільовому сховищі ( git push).
  • "Витягнути" - це цільове сховище, яке захоплює ваші зміни, щоб бути присутніми там ( git pullз іншого репо).

"Запит на виклик" - це ви запитуєте цільовий сховище, щоб отримати його.

"Запит на поштовх" буде цільовим сховищем, яке просить вас внести зміни.


21
це було проблемою і для мене з умовами іменування: D & u просто зробило це набагато простішим для розуміння. думати про це так само, як працюють купівля / продаж валюти в банках.
nsuinteger

Я думаю, вам потрібно переосмислити своє визначення поняття "Потягніть", оскільки є заплутаність щодо "цільового сховища", "змін". Можливо, ви хочете сказати, що "ваш сховище захоплює зміни з цільового сховища"?
MrPisarik

9
Ключова ідея полягає в тому, що термінологія "push" / "pull" використовується для ідентифікації сторони, яка врешті-решт вирішує, чи відбудеться передача, а не сторони, яка створює передану інформацію.
Джесс Рідель

3
Залежить від того, до кого ви звертаєтесь із запитом, якщо ваша команда "push-запит" має більше сенсу, якщо це абсолютно правильний ваш віддалений сховище.
A77

2
Працюючи з центральним, приватним сервером Git у компанії, зазвичай, ви зможете підштовхнути до нього нову філію та вимагати перегляду коду та об'єднання у своїх колег. Отже, "запит на потяг" для цього робочого процесу не є технічно правильним, але виявився термін, обраний усіма та дизайнерами GUI.
Свен

88

Коли ви надсилаєте запит на виклик, ви просите (просите) офіційного власника репо витягнути деякі зміни з вашого власного репо. Звідси "тягнути запит".


2
але власник видасть git merge після його схвалення
Jervie Vitriolo

2
Потяг git - це вибір і злиття разом, тому тягнення вже передбачає злиття.
Xiong Chiamiov

37

tl; dr, оскільки мені не дозволено робити поштовх, я просто красиво надішлю запит до власника репо, щоб вони вирішили витягнути


Хто може надіслати код до сховища?

Якщо хтось (можливо, злий, неосвічений чи невідомий) зміг би прийти і сказати тут, я просто підсунув це до вашої майстерної гілки і переплутав увесь ваш код HAHAHA! ?

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

Тож якщо ви не співпрацітель і намагаєтесь натиснути, ви отримаєте помилку, яка вказує на відсутність дозволу.


Тож як інші розробники можуть підштовхнути до репо, вони не мають дозволу на це?
Ви не можете надати доступ усім, але ви хочете надати іншим торговельну точку / точку входу, щоб вони могли зробити "запит до власника репо, щоб він переніс цей код у репо". Простіше кажучи, роблячи доступ до РЕПО, вони можуть розщедрити його ... внести зміни у власну вилку. Змініть їх на власну вилку . Як тільки це буде у їх власному віддаленому репо:

Вони роблять запит на витяг з вилки і власник висхідного репо (до якого ви не можете натиснути безпосередньо) вирішить об'єднати запит на витяг чи ні.


Також напівзв’язане запитання, яке я рекомендую прочитати Що саме відбувається в git push? Чому git push не розглядається як злиття git?


4
для людей, які не усвідомлюють, що існує різниця в дозволі між натисканням та перетягуванням, ця відповідь має багато сенсу.
приятель

29

Причіпні Запит: Я Запит вам Витягніть шахту.


7
Я, як користувач, розглядає це з моєї точки зору, чи не слід це "просити надіслати це вам"? I >>> You - Ви два рази змінюєте точку відліку в одному контексті ... північніше I >>>> You <<<< Mine
Марін

1
Ця відповідь має найбільш сенс.
шивами

Легкий пізенький лимонний стиск
Іван Івкович

Я прошу вас витягнути мою ..... звідки ??? Я розумію, це було б з вилки оригінального проекту? чи з місцевої копії?
KansaiRobot

5

Я хочу щось підштовхнути до чужого репо.

У мене немає дозволу штовхати (або тягнути з цього приводу).

Власник / співпрацівники мають дозволи. Вони можуть як тягнути, так і натискати. Я не можу натиснути.

Отже, я прошу їх здійснити тягнення від мене - це побічно означає, що я прошу їх прийняти мою поштовх.

Отже, жодного прохання про поштовх. Тільки на потяг. І для прийняття поштовху.

Отже, запит "тягнути". І не прохання про поштовх.


4

Саме слово "Запит" є ключовим у цих діях. Ви також можете подумати про це як сказати: "У мене є прохання взяти мою роботу, ви приймаєте?" - "Запит на отримання".

Спочатку це трохи заплутано, але з часом має сенс.


1

Щоб краще це зрозуміти і запам’ятати його назавжди, потрібно зобразити його.

Зобразіть велике, живе дерево {як ваше сховище}. Дерево занадто міцне, щоб ви змогли засунути гілку або додати до неї нову частину {символізує створення нової гілки або ви натискаєте в ній код}, натомість потрібно попросити дерево витягнути гілку у стовбур або мати зміни від вас.

Термін "запити на потяг" походить від розповсюдженого характеру. Замість того, щоб просто натискати на зміни в сховище (як ви це робите з централізованим сховищем, наприклад, із Subversion), ви публікуєте свої зміни окремо і просите технічне обслуговування вносити свої зміни. Тоді обслуговуючий персонал може переглядати зміни та зробити зазначене тягнення.

Таким чином, ви в основному "запитуєте" хлопців, які мають доступ до репо, до якого ви хочете внести свій внесок, "Витягнути" з вашого репо.

Запити на виклик дозволяють вам повідомити іншим про зміни, які ви перенесли у відділення в сховищі GitHub. Після того, як буде відкрито запит на виклик, ви можете обговорити та переглянути можливі зміни з колабораторами та додати подальші зобов’язання, перш ніж ваші зміни будуть об'єднані в базову гілку. Пояснення Гітхуба


0

Я думаю, що це дурна термінологія, тому що я хочу подумати, що я хочу щось підштовхнути до тебе, а не думати навпаки, просячи когось іншого витягнути мої доповнення. Тому його слід змінити на PUSH REQ. оскільки я є активною частиною. Стрілка йде іншим шляхом, починаючи зі мене, а не Гуфі в іншому кінці. ІМХО.


0

Думай таким чином. Локальне сховище проти віддаленого сховища.

  • Коли ви натискаєте з Local. ( git push) - іншими словами, віддалене сховище - це витягування кодів з вас (Local).

Ви щось просите. Отже, запитайте себе,

  • Ви хочете, щоб віддалене сховище витягувало з вас коди? - Затягнути запит.

Я думаю, що важливо зробити відмінність того, що ви не можете робити запити. Якщо ви можете натиснути, і ви це зробите, це не запит, він злиється з головним. Запит на тягу до сховища git hub - це ви вимагаєте об'єднати ваш код.
Джеймс

Я просто використовую це як приклад. Звичайно, Github може натиснути код. але я відредагую свою відповідь.
Джин Лім

0

Я боюся, що більшість із цих відповідей стосуються питання, що означає "тягнути запит"? або Що означатиме "push-запит"? а не питанням ОП: Чому це називається запитом на виклик, а не з проханням?

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

Тільки люди в GitHub, які ввели цей термін, точно знають. Однак здається очевидним, що цей термінологічний вибір відображає щось на зразок наступної точки зору щодо явища "зміни, що надходять у сховище ззовні": Підтримувач виконує дії (тягне) .

Однак запит також є дією, і виконавець цієї дії є не обслуговуючим, а скоріше подаючим (який зробив ще більшу дію, а саме роботу). Таким чином, термін "тягнути запит" створює плутанину щодо того, хто є агентом . Зрештою, плутанина виникає через рекурсивного характеру запиту: Запит - це і дія первинного агента, і запит на майбутню дію другого агента.

Ситуація є досить аналогічною загальноприйнятим зараз мовним конструкціям на кшталт "ми побудували наш будинок" (використовується замість "ми заплатили комусь іншому, щоб побудувати наш будинок"), у цьому відповідальність за первинну дію перекладається з очевидного оригінального агента на вторинний агент, що виконує управлінську соціальну роль.

З цього можна зробити висновок, що причиною термінологічного вибору є легітимізація точки зору, що управлінська робота - це першокласна праця . Більше того, причиною плутанини щодо цього термінологічного вибору може бути те, що працівники, що не керують ними, природно мають іншу точку зору.

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