81

NServiceBusリポジトリで特定のプルリクエスト(まだメインストリームに処理されていない)をプルする必要があります。

https://github.com/johnsimons/NServiceBus/commit/d8524d53094e8181716e771c1023e968132abc15

明らかに私のリポジトリではありませんが、そのプルリクエストに存在する変更が必要です。

これを行うための最良の方法は何ですか?

4

13 に答える 13

76

プルをリポジトリにフェッチするには:

git fetch git@github.com:jboss/jboss-common-beans.git refs/pull/4/head

次に、FETCH_HEAD で必要なことを行います。

git checkout -b new-branch FETCH_HEAD
于 2012-03-28T07:48:42.603 に答える
25

あなたはこれを行うことができます:

1) アップストリーム リモートを追加します。

git remote add upstream git@github.com:Particular/NServiceBus.git

2) その後、プル リクエストを ID ごとに新しいブランチにチェックアウトできます。

git fetch upstream pull/PULL_REQUEST_ID/head:NEW_BRANCH_NAME

NEW_BRANCH_NAME次に、PR コードを含むという名前のブランチが作成されます。

エイリアスの追加:

私と同じくらい頻繁にこれを行う場合は、いくつかのエイリアスを設定することをお勧めします。私は.gitconfigにこれを持っています:

[alias]
    fetch-pr = "!f(){\
        [ -z \"$1\" ] && { echo Usage: git fetch-pr PULL_REQUEST_ID [REMOTE_NAME] [NEW_BRANCH_NAME]; exit 1; }; \
        remote=${2:-origin}; \
        branch=${3:-pr-$1}; \
        git fetch $remote \"pull/$1/head:$branch\"; \
        }; f "
    pr = "!f(){\
        branch=${3:-pr-$1}; \
        git fetch-pr \"$@\"; \
        git switch $branch; \
        }; f "

上記で、私はできる:

git fetch-pr 123              # fetch PR #123 into branch pr-123
git fetch-pr 123 some-branch  # fetch PR #123 into some-branch
git pr 123                    # fetch and switch to the branch
于 2015-03-10T00:34:15.957 に答える
9

困難な状況 (特に git-repo をチェックアウトしていない場合) の場合、最も簡単な方法はパッチを適用することだと思います。これを行うには、github でプル リクエストを開き、URL に「.patch」を追加してダウンロードし、パッチを適用します。

例:

cd cordova-plugin-media
wget https://github.com/apache/cordova-plugin-media/pull/120.patch
patch -p1 < 120.patch
于 2016-11-17T11:56:10.960 に答える
4

GitHub/ハブ

https://github.com/github/hubは、GitHub API からの追加情報を使用して、このユース ケースやその他のユース ケースを美しく処理する GitHub CLI ヘルパーです。例えば:

git clone https://github.com/github/hub
# Just copy paste the URL.
hub checkout https://github.com/github/hub/pull/970

結果:

  • <USERID>-<BRANCH_NAME>現在、PR を含むというブランチにいます。

    自動的に設定された適切なブランチ名に注意してください。

  • そのブランチは、フォークの元のブランチを追跡するように設定されています。つまり、.git/config以下が含まれています。

    [branch "<USERID>-<BRANCH_NAME>"]
        remote = retronym
        merge = refs/heads/ticket/969
        rebase = true
    

    したがって、さらにコミットがプッシュされた場合は、直接プッシュできgit fetchます。

Linux へのインストールhubは、Go に慣れていない場合は現在のところ苦痛ですが、それだけの価値はあります。Ubuntu 14.04 では、リポジトリの Go が古すぎるため、GVMが最適なオプションです。

bash < <(curl -LSs 'https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer')
. "$HOME/.gvm/scripts/gvm"
gvm install 'go1.4'
gvm use 'go1.4' --default
go get github.com/github/hub

また、GitHub にウェブ UI のコピー ペースト チートシートを提供するよう依頼しました: https://github.com/isaacs/github/issues/449

于 2015-08-17T10:33:56.767 に答える
3

アップストリームリポジトリをアップストリームリモートとして追加したら(@eliasが指摘したように):

$ git remote add upstream git@github.com:Particular/NServiceBus

デフォルトでプル リクエストをフェッチするように git を設定できます。

$ git config --local --add remote.upstream.fetch '+refs/pull/*/head:refs/remotes/upstream/pr/*'

それでは、それを取得しましょう:

$ git fetch upstream
Fetching upstream
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 2), reused 4 (delta 2), pack-reused 0
Unpacking objects: 100% (4/4), done.
From https://github.com/Particular/NServiceBus
 * [new ref]         refs/pull/1/head -> upstream/pr/1
 * [new ref]         refs/pull/2/head -> upstream/pr/2

そしてそれをチェックしてください:

$ git checkout pr/2
Branch pr/2 set up to track remote branch pr/2 from upstream.
Switched to a new branch 'pr/2'
于 2017-07-04T07:02:03.747 に答える
2

これは、GitHub ドキュメントのソリューションです。

プロジェクト リポジトリから新しいブランチをチェックアウトし、変更をテストします。

git checkout -b GithubUserID-branchName branchName
git pull https://github.com/GithubUserID/reponame.git branchName

どこ:

  1. GithubUserIDプルリクエストを開いた人のユーザー名です。
  2. branchNamemaster などのブランチの名前です。
  3. reponamedemo-todo のようなリポジトリ名

例 :

git checkout -b felix123-master master
git pull https://github.com/felix123/demo-todo.git master
于 2020-06-26T16:22:50.660 に答える
0

Github には、プル リクエストをローカルリポジトリにマージするための明確なドキュメントがあります。

https://help.github.com/en/articles/checking-out-pull-requests-locally

要するに、GitHub のプル リクエストは、ブランチ名がシーケンス番号であるベース リポジトリの単なるブランチであるということです。上記の記事では、この番号を見つける方法と、任意のブランチ名でそれをローカル リポジトリにプルする git コマンド ライン マジックを示しています。

GitHub で作成したフォークにプル リクエストをマージする同様の簡単な方法が見つかりませんでした。

于 2019-04-20T18:40:38.997 に答える