Я бы хотел проверить ранее созданный запрос на растяжение (созданный через веб-интерфейс GitHub). Я искал и нашел разные места, где refs/pull или refs/pull/pr
Но когда я добавляю fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
в конфигурационный файл git и делаю git fetch
Что я делаю неправильно? Должен ли GitHub автоматически создавать файл pull/xyz или мне нужно что-то настроить?
Ответ 1
Чтобы загрузить удаленный пиар в ваш локальный репозиторий,
git fetch origin pull/ID/head:BRANCHNAME
где ID
- это идентификатор запроса на извлечение, а BRANCHNAME
- это имя новой ветки, которую вы хотите создать. После того как вы создали ветку, просто
git checkout BRANCHNAME
Подробнее читайте в официальной документации GitHub.
Ответ 2
Это произойдет, если вы не назовете ветку:
git pull origin pull/939/head
Как получить конкретный запрос на перенос на моей машине?
Ответ 3
Этот gist описывает, что происходит, когда вы делаете git fetch:
Очевидно, измените URL-адрес github в соответствии с вашим URL-адресом проекта. Он выглядит следующим образом:
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@github.com:joyent/node.git
fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
Теперь выберите все запросы на вытягивание:
$ git fetch origin
From github.com:joyent/node
* [new ref] refs/pull/1000/head -> origin/pr/1000
* [new ref] refs/pull/1002/head -> origin/pr/1002
* [new ref] refs/pull/1004/head -> origin/pr/1004
* [new ref] refs/pull/1009/head -> origin/pr/1009
...
Чтобы проверить конкретный запрос на тягу:
$ git checkout pr/999
Branch pr/999 set up to track remote branch pr/999 from origin.
Switched to a new branch 'pr/999'
У вас есть различные сценарии, перечисленные в проблемах 259, чтобы автоматизировать эту задачу.
Проект git-extras предлагает команду git-pr
(реализованную в PR 262)
git-pr
(1) - локально проверяет запрос на перенос
СИНТАКСИС
git-pr <number> [<remote>]
git-pr clean
ОПИСАНИЕ
Создает локальную ветвь на основе номера запроса на вывод GitHub и затем переключается на эту ветвь.
Имя пульта для извлечения. По умолчанию origin
.
Примеры
Это проверяет запрос на растяжение 226
от origin
:
$ git pr 226
remote: Counting objects: 12, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 12 (delta 3), reused 9 (delta 3)
Unpacking objects: 100% (12/12), done.
From https://github.com/visionmedia/git-extras
* [new ref] refs/pull/226/head -> pr/226
Switched to branch 'pr/226'
Ответ 4
Я предпочитаю получать и проверять, не создавая локальную ветку и находясь в отключенном состоянии HEAD. Это позволяет мне быстро проверить пулл-запрос, не загрязняя мою локальную машину ненужными локальными ветками.
git fetch upstream pull/ID/head && git checkout FETCH_HEAD
где ID
- это идентификатор запроса извлечения, а в upstream
- исходный запрос извлечения (например, это может быть origin
).
Я надеюсь, что это помогает.
Ответ 5
Ссылаясь на Стивена Пенни, лучше всего создать тестовую ветвь и проверить PR. Итак, вот что бы вы сделали.
- Создайте тестовую ветвь для объединения PR в локальную. Предполагая, что вы находитесь на главной ветке:
git checkout -b test
- Получить изменения PR в тестовой ветке
git pull origin pull/939/head:test
Теперь вы можете спокойно протестировать изменения в этой локальной тестовой ветке (в данном случае с именем test), и как только вы останетесь довольны, можете слить ее, как обычно, из GitHub.
Ответ 6
Если вы используете Github.com, перейдите в раздел "Запросы на извлечение", щелкните соответствующий запрос на извлечение и затем нажмите ссылку "Инструкции для командной строки": ![command line instructions at Github.com]()
Ответ 7
Проблема с некоторыми из вышеперечисленных опций заключается в том, что если кто-то выдвигает больше коммитов в PR после открытия PR, он не даст вам самую последнюю версию.
Для меня то, что сработало лучше всего - перейти к пиару и нажать "Коммиты", прокрутите вниз, чтобы увидеть самый последний хэш коммитов.
а затем просто используйте git checkout, т.е.
git checkout <commit number>
в приведенном выше примере
git checkout 0ba1a50
Ответ 8
Вы можете использовать команду git config
для записи нового правила на .git/config
для извлечения запросов на получение из репозитория:
$ git config --local --add remote.origin.fetch '+refs/pull/*/head:refs/remotes/origin/pr/*'
А потом просто:
$ git fetch origin
Fetching origin
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 2), reused 4 (delta 2), pack-reused 0
Unpacking objects: 100% (4/4), done.
From https://github.com/container-images/memcached
* [new ref] refs/pull/2/head -> origin/pr/2
* [new ref] refs/pull/3/head -> origin/pr/3
Ответ 9
- Откройте пиар на Github. Вверху страницы PR находится номер, который его идентифицирует -
123
и название ветки автора - branch-name
. Скопируйте оба из них.
- Откройте git bash и убедитесь, что ваш рабочий каталог чист, запустив
git status
- получить копию пиара, набрав
git fetch upstream pull/<id>/head:<branch>
. В этом примере вы должны ввести git fetch upstream pull/123/head:branch-name
- Теперь, когда у вас есть копия ветки, переключитесь на нее, используя
git checkout branch-name
. Ваш каталог теперь будет точной копией PR. Обязательно сообщите автору о любых ошибках или предложениях, так как вы не можете добавлять свои собственные изменения непосредственно в запрос на извлечение.
- Когда вы закончите проверять их работу, используйте
git checkout master
, чтобы вернуться к вашей локальной версии Project Porcupine
Смотрите полную инструкцию здесь
Ответ 10
Для Bitbucket вам нужно заменить слово pull
на pull-requests
.
Во-первых, вы можете подтвердить стиль URL-адреса запроса на получение с помощью команды git ls-remote origin
.
$ git ls-remote origin |grep pull
f3f40f2ca9509368c959b0b13729dc0ae2fbf2ae refs/pull-requests/1503/from
da4666bd91eabcc6f2c214e0bbd99d543d94767e refs/pull-requests/1503/merge
...
Как видите, это refs/pull-requests/1503/from
вместо refs/pull/1503/from
Тогда вы можете использовать команды любого из ответов.
Ответ 11
Я случайно закончил писать почти так же, как это предусмотрено git -extras. Поэтому, если вы предпочитаете одну специальную команду вместо того, чтобы устанавливать кучу других дополнительных команд, просто разместите этот git-pr
файл где-то в вашем $PATH
а затем вы можете просто написать:
git pr 42
// or
git pr upstream 42
// or
git pr https://github.com/peerigon/phridge/pull/1
Ответ 12
Если вы следуете рабочему процессу "github fork", где вы создаете форк и добавляете удаленный репозиторий upstream:
14:47 $ git remote -v
origin git@github.com:<yourname>/<repo_name>.git (fetch)
origin git@github.com:<yourname>/<repo_name>.git (push)
upstream git@github.com:<repo_owrer>/<repo_name>.git (fetch)
upstream git@github.com:<repo_owner>/<repo_name>.git (push)
чтобы перетащить в вашу текущую ветку ваша команда будет выглядеть так:
git pull upstream pull/<pull_request_number>/head
чтобы вытащить в новую ветку код будет выглядеть так:
git fetch upstream pull/<pull_request_number>/head:newbranch
Ответ 13
Я использую Hub, инструмент от GitHub: https://github.com/github/hub
С хабом проверить запрос на локальный доступ довольно просто:
hub checkout https://github.com/owner/repo/pull/1234
or
hub pr checkout 1234
Ответ 14
Если их коммиты находятся на главной ветке их разветвленного репо, то вы можете просто сделать следующее.
git fetch git@github.com:<repo_owner>/<repo_name>.git
git checkout FETCH_HEAD