Команда git request-pull
, при наличии подходящего ввода, создает подходящее сообщение электронной почты. В буквальном смысле это все , что он делает. Сообщение электронной почты отправляется на стандартный вывод команды; это зависит от вас, чтобы собрать это и отправить электронное письмо, если это то, что вы хотите сделать.
Команда git pull
запускает git fetch
, за которой следует вторая команда Git, обычно либо git merge
, либо git rebase
. (Для особого случая извлечения в пустой репозиторий без коммитов он будет запускать git checkout
в качестве второй команды.) См. Любой из множества других вопросов о StackOverflow.
Команда git push
заставляет ваш Git вызывать некоторые другие Git и обмениваться информацией, отправлять любые объекты коммитов и другие внутренние объекты Git, которые вы должны отправить, чтобы завершить последний шаг, а затем, в качестве своего последнего шага, дает вежливые запросы. (принудительное принудительное нажатие), команды сравнения и замены (принудительное получение с арендой) или запросы стиля команды (принудительное принудительное нажатие), запрашивающие, чтобы другой Git установил некоторые из своих ссылок на некоторые конкретные идентификаторы хеша .
Ваши три последующих вопроса касаются того, как вы можете использовать эти различные команды и их возможности для создания полезного рабочего процесса. Есть много разных способов сделать это; невозможно назначить один рабочий процесс, который подходит каждому, не делая много предположений о каких-либо ограничениях (или их отсутствии) в отношении доступа к сети и т. д. Сам по себе Git - это скорее система инструментов, которую пользователи могут использовать по своему усмотрению, а не конкретные решения конкретных проблем.
Тем не менее, мы можем до некоторой степени решить эти три вопроса:
- Должен ли я использовать
git pull-request
, чтобы попросить моих пиров git pull
из моего локального репозитория в их отдельные репозитории?
Если хотите, да. Обратите внимание, что для успешного выполнения они должны иметь как минимум разрешения на чтение в локальном хранилище, возможно, через сетевой доступ.
- Должен ли я выполнить git pull-request с общим удаленным репозиторием в качестве аргумента URL?
Если хотите, да. Однако, если вы используете общий удаленный репозиторий, git request-pull
почти полностью избыточен и бессмысленен.
Если да, просит ли администратор общего удаленного хранилища выполнить git pull из моего локального хранилища в удаленное хранилище?
Нет; он попросит их извлечь из общего удаленного хранилища, что, как мы можем предположить, они уже делают часто. Попробуйте запустить git request-pull
, чтобы увидеть. Поскольку его выходные данные отправляются в стандартный вывод, вы будете точно видеть, что отправка этого вывода кому-либо еще по электронной почте. В частности, однако, он скажет:
The following changes since commit %H:
%s (%ci)
are available in the Git repository at:
$url $pretty_remote
for you to fetch changes up to %H:
%s (%ci)
с различными заполненными полями $
и %
. Часть $url
- это буквально все, что вы передали в качестве аргумента URL, а $pretty_remote
состоит из извлечения refs/heads/
или refs/
из целевая часть аргумента refspec, если он указан. См. Код git-request-pull
(это простой сценарий оболочки) для получения дополнительной информации здесь.
- Нужно ли
git push
моей работе над этой функцией из локального репозитория в общий удаленный репозиторий перед запуском git request-pull
?
Нет. Как и в вопросе 2, если у вас есть общий репозиторий, git request-pull
почти наверняка не имеет смысла. Эта команда основана на предположении, что по какой-либо причине у вас нет истинного общего хранилища - что вы и ваши вышестоящие пользователи имеете только read доступ к хранилищам друг друга.