Как слить запрос на перенос на чужой проект в git?
Я клонировал это репо на своем компьютере: https://github.com/derobins/wmd.git
Однако есть несколько ошибок, и похоже, что другой пользователь исправил их и выпустил "Pull requests" (я предполагаю, что это запросы на их изменения, которые нужно совершить?)
Можно ли объединить эти изменения в мою локальную версию?
EDIT: просто чтобы быть ясным, это не мой репозиторий. Я использую редактор WMD из derobins, но у него есть несколько ошибок, которые требуются для исправления этих запросов на загрузку. Я клонировал репо на Ubuntu (не в github) и надеялся объединить эти изменения, если это возможно.
Ответы
Ответ 1
(GitHub имеет очень тщательную документацию о том, как бороться с запросами на тягу.)
По существу, вы захотите добавить удаленный репозиторий для человека, который сделал запросы на вытягивание, например:
git remote add helpful git://github.com/helpful-person/whatever.git
... затем введите их изменения в ветки удаленного отслеживания:
git fetch helpful
... так что теперь у вас есть все коммиты от этого репозитория GitHub этого лица в вашем клоне восходящего репозитория. Если вы посмотрите на дополнительные коммиты в рамках этого запроса на вытягивание, вы можете:
- слить последний, например.
git merge 75708aeab5
- вишня выбирает каждое из этих изменений, например.
git cherry-pick 2142db89
, git cherry-pick 75708aeab5
- создать локальную ветвь для дальнейшей работы над ними, например.
git checkout -b fix-for-issue3 75708aeab5
- и т.д.. и др.
Альтернативой является просто клонирование хранилища вкладчика, который сделал запросы на pull вместо этого, если это то же самое, но для этих исправлений.
Ответ 2
В принятом ответе предлагается клонировать или добавлять удаленный доступ для хранилища лица, сделавшего запрос на вытягивание. Другим более чистым и простым способом является использование этой команды
git pull https://github.com/otheruser/repo.git branchname
Например, на момент написания статьи ghi есть три открытых запроса на растяжение, которые еще не были объединены. Это то, что я сделал, чтобы объединить их в свое местное репо.
# I want to make sure my master is in sync with the upstream master
git checkout -b merge-patches master
# first pull request
git pull --no-ff https://github.com/TiddoLangerak/ghi.git master
# second pull request
git pull --no-ff https://github.com/wayfare/ghi.git master
Обратите внимание, что оба запроса на отправку были отправлены от мастера, поэтому я вытащил их из ветки master
.
Таким образом, другие репозитории не добавляются к вашим пультам, и вы не должны вишневать или клонировать их локально.
Ответ 3
Вы клонируете репо для учетной записи github. Затем просто зайдите в forkqueue вашего клонированного репо и выберите патчи, которые хотите объединить в свой репозиторий.