Я хотел бы клонировать репозиторий из GitHub. Проблема в том, что я не хочу основной ветки; Я хочу, чтобы версия в этот неутвержденный запрос на перенос.
Возможно ли, чтобы я клонировал версию запроса на перенос вместо основного репозитория?
Я хотел бы клонировать репозиторий из GitHub. Проблема в том, что я не хочу основной ветки; Я хочу, чтобы версия в этот неутвержденный запрос на перенос.
Возможно ли, чтобы я клонировал версию запроса на перенос вместо основного репозитория?
Вы можете клонировать нужную ветку с помощью параметра -b
в команде git clone
.
В вашем случае ветка, которую вы хотите клонировать, является ветвью источника запроса на pull (функция/поддержка mongoose):
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone
Самый простой способ сделать это:
git fetch origin pull/2/head
git checkout -b pullrequest FETCH_HEAD
Теперь вы будете в новой ветке, которая находится в состоянии запроса на растяжение.
git fetch origin refs/pull/PR_NUMBER/head:NEW_LOCAL_BRANCH
например:
$ git fetch origin pull/611/head:pull_611
$ git checkout pull_611
Внести изменения, зафиксировать их, PUSH и открыть новый PR из вилки на GitHub
Вы можете следовать указаниям этого метода, чтобы иметь возможность напрямую проверить удаленный доступ, не вычисляя их хранилище и ветвь.
Использование примера
Для одного из моих проектов (github3.py) у меня есть следующее в github3.py/.git/config
[remote "github"]
fetch = +refs/heads/*:refs/remotes/github/*
fetch = +refs/pull/*/head:refs/remotes/github/pr/*
url = [email protected]:sigmavirus24/github3.py
Первая строка - это стандартная для каждого пульта, за исключением того, что github
заменяется удаленным именем. Это означает, что удаленные головки (или головки ветвей на этом сервере) "сопоставляются" с локальными пультами с префиксом github/
. Так что если я сделал git fetch github
и имел ветку на GitHub, которая не была замечена локально на моей машине, она загрузила ветку, и я мог бы переключиться на нее следующим образом: git checkout -t github/branch_name
.
Вторая строка делает то же самое, но делает это для запросов pull вместо стандартных ветвей git. Вот почему вы видите refs/pull/*/head
. Он извлекает головку каждого запроса на растяжение на GitHub и сопоставляет его с github/pr/#
. Итак, если кто-то отправляет запрос на растяжение и, например, он пронумерован 62, вы должны:
git fetch github
git checkout -t github/pr/62
И тогда вы попадете в локальную ветвь с именем pr/62
(предположив, что ее еще не существует). Это приятно и означает, что вам не нужно отслеживать удаленные каналы или ветки других людей.
Когда пользователь отправляет запрос на перенос, они запрашивают, чтобы некоторые изменения были объединены из ветки на их клоне вилки обратно в другой репозиторий пользователя.
Изменения, которые вы хотите получить, можно получить из источника запроса на растяжение. Для этого клонируйте пользовательский репозиторий (git://github.com/berstend/frappe.git
), а затем проверьте ветвь, из которой он создал запрос на растяжение (feature/mongoose-support
).
После установки git-extras
(cd /tmp && git clone --depth 1 https://github.com/tj/git-extras.git && cd git-extras && sudo make install)
Вы можете просто использовать git pr
$ git pr 62 [remote]
Этот запрос тяги показывает коммиты от этой вилки человека, поэтому вы можете видеть, что он нажимает свои изменения из ветки feature/mongoose-support
.
Вы можете клонировать его репозиторий и проверить, что ветка
git clone git://github.com/dweldon/frappe
cd frappe
git pull origin pull/2/head
Как я могу получить несвязанный запрос на получение ветки, которой я не владею?