Как объединить запрос на вытягивание в чужом проекте в git?

я клонировал это РЕПО на своем компьютере:https://github.com/derobins/wmd.git

есть несколько ошибок с ним, хотя, и похоже, что другой пользователь исправил их и выдал "запросы на вытягивание" (я предполагаю, что это запросы на их изменения?)

можно ли объединить эти изменения в мою локальную версию?

EDIT: просто чтобы быть ясным, это не мой репозиторий. Я использую редактор WMD от derobins, но у него есть несколько ошибок, которые эти запросы pull претендуют на исправление. Я клонировал РЕПО на Ubuntu (не в github) и надеялся объединить эти изменения, если это возможно.

3 ответов


(GitHub есть очень подробную документацию о том, как справиться с запросами на вытягивание.)

по сути, вы захотите добавить пульт дистанционного управления для репозитория человека, который сделал запросы pull, например:

git remote add helpful git://github.com/helpful-person/whatever.git

... затем извлеките их изменения в ветви удаленного отслеживания:

git fetch helpful

... таким образом, теперь у вас есть все коммиты из репозитория GitHub этого человека в вашем клоне вышестоящего репозитория. Если вы посмотрите на дополнительные коммиты в этом запросе pull вы можете:

  1. объединить последний, например git merge 75708aeab5
  2. cherry выберите каждое из этих изменений, например git cherry-pick 2142db89, git cherry-pick 75708aeab5
  3. создайте локальную ветку для дальнейшей работы над ними, например git checkout -b fix-for-issue3 75708aeab5
  4. etc. так далее.

альтернативой является просто клонирование репозитория участника, который сделал запросы pull вместо этого, если это то же самое, но для этих исправлений.


принятый ответ предлагает клонировать или добавлять remote для репозитория человека, который сделал запрос pull. Другой чище и проще - выполнить команду

git pull https://github.com/otheruser/repo.git branchname

например, на момент написания статьи ghi имеет три открытых запроса pull, которые еще не были объединены. Это то, что я сделал, чтобы объединить их в моей локальной РЕПО.

# 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

обратите внимание, что оба запроса pull были отправлены от мастера, поэтому я вытащил их master филиала.

таким образом, другие репозитории не добавляются к вашим пультам, и вам не нужно выбирать или клонировать их локально.


вы клонируете РЕПО на свою учетную запись github. Затем просто посетите forkqueue вашего клонированного РЕПО и выберите патчи, которые вы хотите объединить в свой репозиторий.