Почему git 'pull request' не называется 'push request'?


452

Терминология, используемая для слияния ветки с официальным репозиторием, является «запросом извлечения». Это сбивает с толку, так как кажется, что я прошу перенести мои изменения в официальный репозиторий.

Почему он называется запросом на удаление, а не запросом на передачу?


45
Представьте себе большое живое дерево. Дерево слишком крепкое, чтобы в него можно было протолкнуть ветку, вместо этого вы должны попросить дерево подтянуть ветку в ствол, усиливая ее.
Люк


2
Если вы используете удаленный репозиторий, такой как gitihub, одна из последних команд, которые сопровождающий выполнит при выполнении запроса через командную строку, - это git push. Для меня это говорит само за себя ... (да, они могут выдавать git pull, затем git push, но push запрашивали и это то, что в конечном итоге делается)
ebyrob

62
GitLab их называет merge requests. Намного понятнее, ИМХО. :)
U007D

Ответы:


377

Если у вас есть изменение кода в вашем репозитории, и вы хотите переместить его в целевой репозиторий, то:

  • «Push» означает, что вы принудительно вносите изменения в целевой репозиторий ( git push).
  • «Pull» - это целевое хранилище, в котором хранятся ваши изменения ( git pullиз другого репо).

«Вытягивающий запрос» - вы запрашиваете целевой репозиторий, чтобы получить ваши изменения.

«Push-запрос» - это целевой репозиторий, который запрашивает у вас изменения.


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

Я думаю, что вам нужно переопределить ваше определение «Pull», потому что есть путаница с «целевым хранилищем», «вашими изменениями». Может быть, вы хотите сказать, что «ваш репозиторий захватывает изменения из целевого репозитория»?
MrPisarik

9
Основная идея заключается в том, что терминология «push» / «pull» используется для идентификации стороны, которая в конечном итоге решает, происходит ли передача, а не стороны, которая создает передаваемую информацию.
Джесс Ридель

3
Это зависит от того , кого вы запрашиваете, если это ваша команда, то «push-запрос» имеет больше смысла, если это удаленный репозиторий, то вы абсолютно правы.
A77

2
При работе с центральным частным сервером Git в компании, как правило, вы можете добавить к нему новую ветку и запросить проверку кода и объединение с вашими коллегами. Таким образом, «запрос на извлечение» для этого рабочего процесса не является технически правильным, но это оказался термин, выбранный всеми и дизайнерами графического интерфейса.
Свен

88

Когда вы отправляете запрос на извлечение, вы просите (запрашивает) у официального владельца репо вытащить некоторые изменения из вашего собственного репо. Отсюда "тянуть запрос".


2
но владелец выдаст Git
Merge

2
Git pull - это выборка и объединение, поэтому pull уже подразумевает объединение.
Xiong Chiamiov

37

tl; dr, поскольку мне не разрешено делать толчок, я просто сделаю запрос владельцу репо, чтобы он решил потянуть


Кто может отправить код в хранилище?

Если кто-то (возможно, злой, необразованный или неизвестный) сможет прийти и сказать здесь, я просто перенес это в вашу главную ветку и испортил весь ваш код, ХАХАХА! ?

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

Так что если вы не являетесь соавтором и попытаетесь выдвинуть, вы получите сообщение об ошибке, указывающее, что у вас нет разрешения.


Так как же другие разработчики могут подтолкнуть к репо, на который им не дано разрешение?
Вы не можете предоставить доступ всем, но хотите предоставить другим точку выхода / входа, чтобы они могли «обратиться к владельцу репо с просьбой вытащить этот код в репо». Проще говоря, сделав репо доступным, они могут раскошелиться ... внести свои изменения в свой собственный форк. Протолкни свои изменения на свою вилку . После того, как это в их собственном удаленном репо:

Они делают запрос на извлечение из своего форка, и владелец репозитория в верхнем потоке (к которому вы не можете напрямую подтолкнуть) решит, объединить или нет запрос на извлечение.


Также наполовину связанный вопрос, который я рекомендую прочитать Что именно происходит в git push? Почему git push не рассматривается как git merge?


4
для людей, которые не понимают, что между push и pull существует разница в разрешениях, этот ответ имеет большой смысл.
приятель

29

Прицепные Запрос: Я Запрос вам Вытащите шахту.


7
Я, как пользователь, смотрю на это с моей точки зрения, не должно ли это быть "Я прошу передать это вам?" I >>> You - Вы меняете точку отсчета дважды в одном и том же контексте ... а не I >>>> You <<<< Mine
Марин

1
Этот ответ имеет смысл.
Шивамс

Легкая киска с лимоном
Иван Ивкович

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

5

Я хочу подтолкнуть что-то к чьему-либо репо.

У меня нет разрешения толкать (или тянуть, в этом отношении).

У владельца / соавторов есть разрешения. Они могут тянуть так же как толкать. Я не могу толкнуть.

Итак, я прошу их выполнить от меня попытку - это косвенно означает, что я прошу их принять мой толчок.

Таким образом, нет запроса на толчок. Только для тяги. И для принятия толчка.

Следовательно, запрос «тянуть». И не «пуш» запрос.


4

Именно слово «Запрос» является ключевым в этих действиях. Вы также можете думать об этом как о том, что «у меня есть просьба, чтобы вы взяли мою работу, вы принимаете?» - «Запрос на тягу».

Сначала это немного сбивает с толку, но в конце концов имеет смысл.


1

Чтобы понять это лучше и запомнить это навсегда, вам нужно представить это.

Изобразите большое живое дерево {в качестве хранилища}. Дерево слишком крепкое, чтобы вы могли вставить в него ветку или добавить в нее новую деталь {символизирует создание новой ветви или вставку в нее кода}, вместо этого вы должны попросить дерево протянуть ветку в ствол или получить меняется от вас.

Термин «запросы извлечения» происходит от распределенной природы. Вместо того, чтобы просто помещать свои изменения в репозиторий (как вы это сделали бы с централизованным репозиторием, например, с Subversion), вы публикуете свои изменения отдельно и просите сопровождающего внести их. Сопровождающий затем может просмотреть изменения и выполнить указанное действие.

Таким образом, вы в основном «просите» ребят с правами на запись в репо, в который вы хотите внести свой вклад, «вытащить» из своего репо.

Запросы извлечения позволяют вам сообщать другим об изменениях, которые вы отправили в ветку в репозитории на GitHub. После того, как запрос на открытие открыт, вы можете обсудить и рассмотреть потенциальные изменения с соавторами и добавить последующие коммиты до того, как ваши изменения будут объединены с базовой веткой. Github Объяснение


0

Я думаю, что это глупая терминология, потому что я хочу думать, что я хочу НАЖАТЬ что-то для вас, а не думать наоборот, попросив кого-то еще вытянуть мои добавления. Поэтому он должен быть изменен на PUSH REQ. так как я активная часть. Стрела идет другим путем, начиная со мной, а не с Гуфи на другом конце. ИМХО.


0

Думай так. Локальный репозиторий против Удаленного репозитория.

  • Когда вы толкаете из местного. ( git push) - другими словами, удаленный репозиторий извлекает из вас коды (локально).

Вы запрашиваете что-то. Итак, спросите себя,

  • Вы хотите удаленный репозиторий вытаскивая коды от вас? - Запрос на тягу.

Я думаю, важно различать, что вы не можете делать push-запросы. Если вы можете нажать и сделаете это, это не запрос, а слияние с мастером. Запрос на получение доступа к репозиторию git hub - это то, что вы запрашиваете слияние вашего кода.
Джеймс

Я просто использую это в качестве примера. Конечно, Github может выдвинуть код. но я отредактирую свой ответ.
Джин Лим

0

Я боюсь, что большинство из этих ответов касаются вопроса Что означает «запрос на извлечение»? или что будет означать «push-запрос»? а не вопрос ОП: почему он называется запросом на удаление, а не запросом на передачу?

Обычно такой вопрос замены приемлем, но в этом случае ясно, что ОП знает ответы на эти вопросы замены, поэтому отвечать на них не очень полезно.

Только люди в GitHub, которые придумали этот термин, знают наверняка. Однако кажется очевидным, что этот терминологический выбор отражает нечто вроде следующей точки зрения относительно феномена «изменений, поступающих в хранилище извне»: сопровождающий выполняет действие (тянуть) .

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

Ситуация вполне аналогична распространенным в настоящее время лингвистическим конструкциям, таким как «мы построили наш дом» (используемым вместо «мы заплатили кому-то другому, чтобы построить наш дом»), поскольку ответственность за основное действие переходит от очевидного первоначального агента к вторичный агент, выполняющий управленческую социальную роль.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.