Git Pull против запроса на извлечение

Я новичок в использовании Git, поэтому прошу прощения, если это тривиально. У меня есть частный репозиторий, настроенный с использованием Github и EGit.

Чтобы обновить и объединить ветку моего локального репозитория с удаленной версией (по сути, git pull), я использую Team > Pull в Eclipse.

Чтобы объединить ветку в основную ветку, я должен запросить и впоследствии одобрить запрос на извлечение на Github.

В чем разница между вызовом git pull и отправкой pull request?

Я видел, что это связано с моделью совместной разработки Fork and Pull и используется для проверки кода. Я думаю, что понимаю мотивацию и полезность запроса на включение, но что это такое?


person Jonn    schedule 23.03.2014    source источник
comment
Серьезно, они создали все крайне запутанные термины: 1. Клонирование, запрос на вытягивание, ветвление, Git, pull, выборка, 2. Push, Commit, Check-in, Git add 3. Что такое слияние?   -  person Atul    schedule 20.10.2019


Ответы (3)


Если вы используете git pull, вы переносите изменения из удаленного репозитория в свой.

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

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

(В качестве примечания: если вы новичок в Git, я бы посоветовал использовать git fetch, а затем git merge вместо git pull. git pull фактически представляет собой git fetch, за которым следует git merge, но выполнение их по отдельности дает вам лучший контроль над потенциальными конфликтами.)

person Bruno    schedule 23.03.2014
comment
Спасибо за ответ. Так являются ли отдельные ветки фактически отдельными репозиториями? Сопровождающий основного репозитория получает вашу ветку с возможностью объединить эти изменения в основную ветку? - person Jonn; 23.03.2014
comment
Не совсем, у вас может быть несколько веток в репозитории. На самом деле не существует понятия главного репозитория, скорее понятия сопровождающего/официального репозитория (это скорее административное понятие). Разветвление на GitHub клонирует репозиторий в вашу учетную запись, поэтому у вас есть отдельный репозиторий для публикации ваших изменений и приглашения сопровождающего основного репозитория для извлечения ваших изменений (с помощью запросов на включение). Запросы на вытягивание — это в основном концепция GitHub (или Gitlab/Gitorious) для управления совместной работой, она не совсем напрямую связана с самим Git. - person Bruno; 23.03.2014
comment
Это имеет смысл. Таким образом, это кажется в основном применимым к децентрализованному проекту с открытым исходным кодом. В другом ответе @TimWolla упомянула команду git request-pull. Разве это не стандартная функция Git? - person Jonn; 23.03.2014
comment
git request-pull кажется более удобной командой, чтобы представить сообщение, которое вы отправляете сопровождающим, чтобы они знали, что делать (например, готово к отправке по электронной почте). Это задокументировано здесь: Когда ваша работа была доведена до вашего fork, вам нужно уведомить сопровождающего. Это часто называют запросом на вытягивание, и вы можете либо сгенерировать его через веб-сайт — на GitHub есть кнопка запроса на вытягивание, которая автоматически отправляет сообщение мейнтейнеру, — либо запустить команду git request-pull и вручную отправить результат мейнтейнеру проекта по электронной почте. - person Bruno; 23.03.2014

pull request просит сопровождающего репозитория внести git pull некоторые изменения (как следует из названия). GitHub предоставляет дополнительный простой в использовании интерфейс, упрощающий рассмотрение такого запроса.
Вам не нужно использовать его для слияния в какой-то ветке. Но вы можете использовать его, и может быть полезно еще раз проверить, готовы ли все изменения к объединению. Если вы не хотите или не нуждаетесь в дополнительной безопасности, вы можете просто git merge ветвь.


В самом git также есть команда, которая создает запрос на вытягивание, предназначенный для использования в списках рассылки. Вы можете запросить генерацию с помощью команды git request-pull. На самом деле для некоторых проектов с помощью этой команды необходимо отправить запрос на включение! Вывод команды выглядит примерно так (взято официальной домашней страницы git) :

$ git request-pull origin/master myfork
The following changes since commit 1edee6b1d61823a2de3b09c160d7080b8d1b3a40:
  John Smith (1):
        added a new function

are available in the git repository at:

  git://githost/simplegit.git featureA

Jessica Smith (2):
      add limit to log function
      change log output to 30 from 25

 lib/simplegit.rb |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)
person TimWolla    schedule 23.03.2014

Git Pull

Удаленное репо ======> локальное репо

git pull = Git Fetch + Git слияние

Пулл-реквест

Это вещь Github.

Удаленный репозиторий Github‹========Запрос на извлечение из=====вашего репозитория Github

Примет ли сопровождающий удаленного репозитория github ваш запрос на извлечение или нет, зависит от нее.

person Asif    schedule 29.01.2019