509

私がフォークしている GitHub のプロジェクトには、作成者がまだプルしていないフォークにプルしたい新しいプル リクエストがあります。

他のフォークから自分のフォークにプル リクエストを適用する簡単な方法はありますか? 私が行方不明になっているものは他にありますか?

4

7 に答える 7

328

更新: ウェブページ経由

これは、github Web ページからも実行できます。

関心のある fork ( ) からの保留中のプル リクエストを持つMyFork共通リポジトリ ( ) のfork ( ) が既にあるはずです。BaseRepoOtherFork

  1. フォーク ( OtherFork) に入れたいプル リクエストを開始したフォーク ( ) に移動しますMyFork
  2. のプルリクエストページに移動しますOtherFork
  3. 新しいプルリクエストをクリック
  4. 保留中のプル リクエストが提供されます。OtherFork適切なブランチも選択することを忘れないでください。左側をベース フォークとして選択します ( MyFork) (重要)。
  5. のオプションが にView pull request変わるはずCreate pull requestです。これをクリックしてください。

これで、保留中のプル リクエストが fork ( ) にあるはずですMyFork。これを単純に受け入れることができます。

于 2015-02-25T21:02:02.240 に答える
293

手動で非常に簡単に行うことができます:

  • リポジトリのリモートとして他のフォークを追加します。

    git remote add otherfork git://github.com/request-author/project.git
    
  • 彼のレポのコミットをフェッチする

    git fetch otherfork
    
  • プル リクエストを適用するには 2 つのオプションがあります (1 を選択したくない場合)。

    1. オリジンとプル リクエストの間に追加された最終的なコミットも適用することを気にしない場合は、プル リクエストが形成されたブランチをリベースできます。

      git rebase master otherfork/pullrequest-branch
      
    2. プル リクエストでコミットのみが必要な場合は、その SHA1 を特定して実行します

      git cherry-pick <first-SHA1> <second-SHA1> <etc.>
      
于 2011-05-16T19:31:59.200 に答える
80

前にTekkubが言ったように、ブランチを直接プルするだけです. ほとんどの場合、GitHub では、ブランチはプロジェクトの要求側ユーザーのフォークの単純な「マスター」です。

例:git pull https://github.com/USER/PROJECT/ BRANCH

そして実際の例として:

safaribooks という github プロジェクトをフォークし、元のプロジェクトにフォークに入れたい次のプル リクエストがあるとします。

ここに画像の説明を入力

次に、フォークのクローン プロジェクト フォルダーで、次を実行します。

git pull https://github.com/fermionic/safaribooks.git fix-str-decode
于 2012-07-26T18:58:37.543 に答える
28

プロジェクトのプル リクエストは、さまざまな作成者 (フォーク) から来る可能性があり、フォークごとに個別のリモートは必要ないでしょう。また、作成者がプル リクエストを送信するときに使用したブランチや、作成者のマスター ブランチに他に何があるかを推測したくありません。したがって、プル リクエストは、他のフォークではなく、アップストリーム リポジトリに表示されているとおりに参照することをお勧めします。

ステップ1:

git remote add upstream <url>

おそらくこの手順はすでに完了していますが、そうでない場合は、上流のプロジェクト用にリモートを定義する必要があります。URL は、フォークしたプロジェクトのクローン URL です。詳細については、フォーク用のリモートの構成とフォーク同期を参照してください。 upstreamはリモートに付ける名前で、何でもかまいませんが upstream、従来の名前です。

ステップ2:

git pull upstream refs/pull/{id}/head

...{id}プルリクエスト番号はどこにありますか。 upstreamプル元のリモートの名前です。つまり、手順 1 を正確に実行した場合は「アップストリーム」です。URL の場合もあり、その場合は手順 1 を省略できます。

ステップ 3:

マージ コミットのコミット メッセージを入力します。デフォルトのままでもかまいませんが、プル リクエスト番号、修正された問題、簡単な説明を 1 行にまとめて提供することをお勧めします。

Merge PR#42, fixing VIM-652, support for mapping arbitrary IDEA actions
于 2014-10-20T22:37:57.823 に答える
22

私のために働いたいくつかのより詳細な情報。

フォークされたレポの .git/config ファイルは次のようになります。

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = false
[remote "origin"]
        url = git@github.com:litzinger/angular-carousel.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
        rebase = true
[remote "source"]
        url = git://github.com/revolunet/angular-carousel.git
        fetch = +refs/heads/*:refs/remotes/source/*
        fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

次に、「git fetch source」を実行すると、フォークされたリポジトリからのすべてのプル リクエストが一覧表示されます。

 * [new ref]         refs/pull/54/head -> origin/pr/54
 * [new ref]         refs/pull/67/head -> origin/pr/67
 * [new ref]         refs/pull/69/head -> origin/pr/69
 * [new ref]         refs/pull/71/head -> origin/pr/71

そして、特定のプル リクエストをマージするには、「git merge master origin/pr/67」を実行します。

于 2013-11-18T21:50:35.670 に答える
9

私がすることは次のとおりです。

git checkout master
git remote add #NAME# #ADDRESS TO REPO#
git fetch #USERNAME#
git checkout -b test_fork
git rebase #NAME#/#BRANCH#

という名前のテスト ブランチに変更をマージしましたtest_fork。変更が私のツリーを汚さないように。

オプションで、上記のようにcherry-pickを使用して、より望ましい場合は特定のコミットを選択できます。

幸せの旅 :)

于 2011-05-17T00:46:53.710 に答える
1

これには、便利なダンディ スクリプトを使用します。次のように入力してスクリプトを実行します。

git prfetch upstream

上流のフォークからすべてのプル リクエストを取得します。

スクリプトを作成するには、ファイルを作成します~/bin/git-prfetch

ファイルには次のものが含まれている必要があります。

#!/bin/bash

if [ -z "$1" ]; then
    echo "Please supply the name of a remote to get pull requests from."
    exit 1
fi

git fetch $1 +refs/heads/\*:refs/remotes/$1/\* +refs/pull/\*/head:refs/remotes/$1/pr/\*

次のように設定して、パスにスクリプトが含まれていることを確認します。

export PATH="$HOME/bin:$PATH"

このファイルを追加~/.bashrcして、変更を永続的にすることができます。

ここで、プル リクエストを取得するフォークを必ず追加してください。

git remote add upstream https://github.com/user/repo.git

その後

git prfetch upstream
于 2019-08-01T20:35:07.837 に答える