web-dev-qa-db-ja.com

gitで他の人のプロジェクトのプルリクエストをマージするにはどうすればよいですか?

このレポを自分のコンピューターにクローンしました: https://github.com/derobins/wmd.git

ただし、いくつかのバグがあり、別のユーザーがそれらを修正し、「プル要求」を発行したようです(これらは変更をコミットする要求ですか?)

これらの変更をローカルバージョンにマージすることはできますか?

編集:明確にするために、これはnot私のリポジトリです。私はderobinsのWMDエディターを使用していますが、いくつかのバグがあり、これらのプルリクエストは修正が必要です。 Ubuntu(githubではなく)にレポジトリをクローンし、可能であればそれらの変更をマージすることを望んでいました。

53
DisgruntledGoat

(GitHubには、プルリクエストの処理方法に関する 非常に詳細なドキュメント があります。)

基本的に、プルリクエストを行った人のリポジトリにリモートを追加する必要があります。例:

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

...次に、変更をリモートトラッキングブランチにフェッチします。

git fetch helpful

...これで、アップストリームリポジトリのクローンに、その人のGitHubリポジトリからのすべてのコミットがあるようになります。そのプルリクエスト内の追加のコミットを見ると、次のことができます:

  1. 最新のものをマージする、例えばgit merge 75708aeab5
  2. これらの変更のそれぞれを選択します。 git cherry-pick 2142db89git cherry-pick 75708aeab5
  3. ローカルブランチを作成して、さらに作業を続けます。 git checkout -b fix-for-issue3 75708aeab5
  4. などなど.

別の方法は、プルリクエストを行った寄稿者のリポジトリを複製することです。それが同じであるが、修正が必要な場合です。

55
Mark Longair

受け入れられた回答は、プル要求を行った人のリポジトリのリモートを複製または追加することを示唆しています。別の よりクリーンでシンプルな方法 は、このコマンドを使用することです

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

たとえば、執筆時点では、 ghi にはまだマージされていない3つのオープンプルリクエストがあります。これは、それらをローカルリポジトリにマージするために行ったことです。

# 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ブランチからプルしたことに注意してください。

この方法では、他のリポジトリがリモートに追加されることはなく、ローカルで選択または複製する必要もありません。

30
Andrew-Dufresne