Я хочу клонировать репозиторий с 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/…