Я хочу клонировать репозиторий с GitHub. Проблема в том, что мне не нужна основная ветка; Мне нужна версия в этом неутвержденном запросе на перенос .
Могу ли я клонировать версию запроса на перенос вместо основного репозитория?
Я хочу клонировать репозиторий с GitHub. Проблема в том, что мне не нужна основная ветка; Мне нужна версия в этом неутвержденном запросе на перенос .
Могу ли я клонировать версию запроса на перенос вместо основного репозитория?
Ответы:
Вы можете клонировать нужную ветку, используя -bопцию и запрос на вытягивание:
git clone https://github.com/user_name/repo_name.git -b feature/pull_request_name dir_name
В вашем случае ветка, которую вы хотите клонировать, является исходной ветвью запроса на перенос ( feature/mongoose-support):
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support ./mongoose-support
Самый простой способ сделать это так:
git fetch origin pull/2/head
git checkout -b pullrequest FETCH_HEAD
Теперь вы будете в новой ветке, которая находится в состоянии запроса на перенос.
Вы можете настроить псевдоним, запустив
git config --global alias.pro '!f() { git fetch -fu ${2:-origin} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f'
Теперь вы можете проверить любой PR, запустив его git pr <pr_number>, или git pr <pr_number> <remote>если ваш пульт github не назван origin.
.gitconfigфайл под [alias]: pr = "!f() { git fetch $1 pull/$2/head:pull_$2; git co pull_$2; }; f". Таким образом, я просто git pr upstream 62печатаю, и следующее, что я знаю, я нахожусь в новой ветви PR # 62 от апстрима! Если вы всегда используете, originвы можете жестко запрограммировать его вместо $1, но это меняет меня.
co
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.
Вторая строка делает то же самое, но делает это для запросов на вытягивание вместо стандартных веток git. Вот почему вы видите refs/pull/*/head. Он извлекает заголовок каждого запроса на перенос на GitHub и сопоставляет его github/pr/#. Итак, если кто-то отправляет запрос на перенос, и он имеет номер 62 (например), вы должны сделать:
git fetch github
git checkout -t github/pr/62
И тогда вы будете в локальной ветке с именем pr/62(при условии, что она еще не существует). Это приятно и означает, что вам не нужно отслеживать чужие пульты или ветки.
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_cloneнепонятного" документа по сути.
git fetch githubвы сможете git co -t github/pr/#. Это избавляет вас от необходимости копировать и вставлять удаленный URL-адрес, вычислять имя ветки и т. Д. Вы получаете хорошо названные, лаконичные и точные имена веток без дополнительных хлопот. Но я понимаю, что это может показаться ошеломляющим.
git clone git://github.com/dweldon/frappe
cd frappe
git pull origin pull/2/head
Как я могу получить не объединенный запрос на перенос для ветки, которой я не владею?
git pullсоздает слияние с текущей веткой; обычно для PR вам нужно просто git fetchполучить оригинальный авторский код (тогда он доступен как FETCH_HEAD). Если вы действительно хотите слияние, стоит также упомянуть pull/2/merge(вместо pull/2/head) - это заставляет GitHub предоставить вам точную фиксацию слияния, которая произойдет, если вы сейчас нажмете кнопку [Merge].
Когда пользователь отправляет запрос на перенос, он запрашивает слияние некоторых изменений из ветки на их клоне вилки обратно в репозиторий другого пользователя.
Желаемые изменения можно получить из источника запроса на перенос. Для этого клонируйте репозиторий пользователя ( 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]
С официальным новым интерфейсом командной строки Github :
gh repo clone org/repo
cd repo
gh pr checkout 44
где 44номер PR, но также может быть название филиала.
См. Дополнительные сведения, параметры и инструкции по установке .
cloneа для того, чтобыfetchпосмотреть: stackoverflow.com/questions/6743514/…