У проекта на GitHub, который у меня есть, есть новые запросы на извлечение, которые я хочу добавить в свой ответвление, которые автор еще не получил.
Есть ли простой способ применить pull-запрос от других вилок к моему форку? Есть ли здесь что-то еще, чего мне не хватает?
git
github
pull-request
лук-порей
источник
источник
Ответы:
Вы можете сделать это вручную довольно легко:
добавьте другой форк как удаленный репо:
получить коммиты своего репо
Затем у вас есть два варианта применения запроса на удаление (если вы не хотите выбирать вариант 1.)
Если вам не нужно применять также возможные фиксации, которые были добавлены между источником и запросом на удаление, вы можете просто перебазировать ветку, на которой был сформирован запрос на получение.
Если вы хотите только коммиты в запросе на получение, укажите их SHA1 и выполните
источник
git pull URL branchname
Обновление: через веб-страницу
Вы также можете сделать это через веб-страницу github.
Я предполагаю, что у вас уже должна быть fork (
MyFork
) общего repo (BaseRepo
), в котором есть ожидающий запрос на получение отOtherFork
интересующей вас fork ( ).OtherFork
), который инициировал запрос на получение, который вы хотели бы получить в свой fork (MyFork
)OtherFork
OtherFork
ветку тоже. Выберите с левой стороны в качестве основания вилку свою вилку (MyFork
) ( ВАЖНО ).View pull request
должна измениться наCreate pull request
. Нажмите это.Теперь в вашем fork (
MyFork
) должен быть отложенный запрос на получение , который вы можете просто принять.источник
OtherFork
, из правого раскрывающегося списка «сравнить». Затем я выбрал левую сторону в качестве базовой вилки, как описано выше, чтобы создать запрос на извлечение.Как Tekkub сказал ранее, вы можете просто вытянуть ветку напрямую. Большую часть времени с GitHub ветвь просто "master" на форке запрашивающего пользователя проекта.
Пример:
git pull https://github.com/USER/PROJECT/ BRANCH
И в качестве практического примера:
Допустим, вы разветвляли проект github под названием safaribooks, и в исходном проекте есть следующий запрос на извлечение, который вы хотите поместить в свой форк:
Затем, в клонированной папке проекта вашего форка, запустите:
источник
git pull https://github.com/{upstream/project} refs/pull/{id}/head
вместо этого.Запросы на извлечение проекта могут поступать от разных авторов (вилок), и вам, вероятно, не нужен отдельный пульт для каждой вилки. Кроме того, вы не хотите делать какие-либо предположения о ветке, которую автор использовал при отправке запроса на извлечение, или о том, что еще может быть в основной ветке автора. Поэтому лучше ссылаться на запрос на получение, как он появляется в репозитории upstream, а не как на других форках.
Шаг 1:
Вы, вероятно, уже сделали этот шаг, но если нет, вам понадобится удаленный, определенный для вышестоящего проекта. URL - это клонированный URL проекта, который вы разветвили. Более подробную информацию можно найти в разделе « Настройка пульта для вилки» и « Синхронизация вилки» .
upstream
это имя, которое вы даете удаленному, и хотя оно может быть чем угодно,upstream
это условное имя.Шаг 2:
... где
{id}
номер запроса на извлечение.upstream
это имя пульта, с которого нужно извлечь данные, т. е. просто «вверх по течению», если вы точно выполнили шаг 1. Это также может быть URL, в этом случае вы можете пропустить шаг 1.Шаг 3:
Введите сообщение коммита для коммита слияния. Вы можете оставить значение по умолчанию, хотя я рекомендую дать хорошую однострочную сводку с номером запроса на получение, исправляемой проблемой и кратким описанием:
источник
git pull upstream refs/pull/{id}/head
чтобы получить коммиты в ваш локальный репозиторий, а затем ссылаться на них какFETCH_HEAD
(например,git log ..FETCH_HEAD
посмотреть, что в нем естьgit merge FETCH_HEAD
)Некоторая более подробная информация, которая сработала для меня.
Мой файл .git / config для разветвленного репо выглядит так:
Затем запустите «git fetch source», который затем перечислил все запросы извлечения из разветвленного репо.
А затем для слияния в конкретном запросе на запуск запустите "git merge master origin / pr / 67"
источник
refs/pull/
пространство имен только для чтения ,smartgit.branch.otherRefs=notes;pull
к smartgit.properties согласно syntevo.com/doc/display/SG/System+Properties - вы также можете объединить их оттуда ,Что бы я сделал, это следующее;
Теперь я объединил изменения в тестовую ветку с именем
test_fork
. Так что любые изменения не испортят мое дерево.При желании вы можете использовать cherry-pick, как описано выше, чтобы выбрать конкретный коммит, если это более предпочтительно.
Счастливых путешествий :)
источник
Я использую удобный скрипт для этого. Я запускаю скрипт, набрав:
и он получает все запросы на извлечение из ветки upstream.
Для создания скрипта создайте файл
~/bin/git-prfetch
.Файл должен содержать следующее:
Убедитесь, что ваш путь включает скрипт, установив:
Вы можете добавить этот файл,
~/.bashrc
чтобы сделать изменение постоянным.Теперь убедитесь, что вы добавили ответвление, от которого хотите получать запросы на извлечение:
А потом
источник