Клон GitHub из запроса pull?


Я хотел бы клонировать репозиторий из GitHub. Проблема в том, что я не хочу основную ветку; я хочу версию в этот несанкционированный запрос на вытягивание.

можно ли мне клонировать версию запроса pull вместо основного репозитория?

8 85

8 ответов:

вы можете клонировать ветку, которую вы хотите с помощью на .

в вашем случае ветвь, которую вы хотите клонировать, является исходной ветвью запроса pull (feature/mongoose-support):

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

внесите изменения, зафиксируйте их, Нажмите и откройте новый 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 = git@github.com: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 филиала.

вы можете клонировать его репозиторий и проверить эту ветку