web-dev-qa-db-ja.com

GitHubのプルリクエストをチェックアウトする方法

以前に作成したプルリクエスト(GitHub Webインターフェイスを介して作成)をチェックアウトしたいです。私は検索して、refs/pullまたはrefs/pull/prの異なる場所を見つけました。

しかし、私はfetch = +refs/pull/*/head:refs/remotes/Origin/pr/*をgit設定ファイルに追加してgitフェッチをするとき

何が悪いの? GitHubは自動的にpull/xyzのものを作るべきですか、それとも私は何かを設定する必要がありますか?

172
GarfieldKlon

あなたのローカルレポにリモートPRを取得するには、

git fetch Origin pull/ID/head:BRANCHNAME

ここでIDはプルリクエストID、BRANCHNAMEは作成したい新しいブランチの名前です。ブランチを作成したら、次に単純に

git checkout BRANCHNAME

詳しくは GitHubの公式ドキュメント をご覧ください。

250
timbo

ブランチに名前を付けなくても、これは取得されます。

git pull Origin pull/939/head

どのように私は私のマシン上で特定のpull requestを得るのですか?

97
Steven Penny

That Gist あなたがgitフェッチをしたときに何が起こるかを説明しています:

明らかに、githubのURLをあなたのプロジェクトのURLと一致するように変更してください。結局次のようになります。

[remote "Origin"]
    fetch = +refs/heads/*:refs/remotes/Origin/*
    url = [email protected]:joyent/node.git
    fetch = +refs/pull/*/head:refs/remotes/Origin/pr/*

今度はすべてのpull要求を取得します。

$ git fetch Origin
From github.com:joyent/node
 * [new ref]         refs/pull/1000/head -> Origin/pr/1000
 * [new ref]         refs/pull/1002/head -> Origin/pr/1002
 * [new ref]         refs/pull/1004/head -> Origin/pr/1004
 * [new ref]         refs/pull/1009/head -> Origin/pr/1009
...

特定のプルリクエストをチェックアウトするには:

$ git checkout pr/999
Branch pr/999 set up to track remote branch pr/999 from Origin.
Switched to a new branch 'pr/999'

そのタスクを自動化するために、 issue 259 にリストされたさまざまなスクリプトがあります。
git-extrasプロジェクトは、コマンドgit-prを提案します( PR 262 で実装されています) =)

git-pr(1) - プルリクエストをローカルにチェックアウトする

概要

git-pr <number> [<remote>]
git-pr clean

説明

GitHubのプルリクエスト番号に基づいてローカルブランチを作成し、その後そのブランチに切り替えます。

取得元のリモートの名前。デフォルトはOriginです。

これはOriginからのプルリクエスト226をチェックアウトします。

$ git pr 226

remote: Counting objects: 12, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 12 (delta 3), reused 9 (delta 3)
Unpacking objects: 100% (12/12), done.
From https://github.com/visionmedia/git-extras
  * [new ref] refs/pull/226/head -> pr/226
Switched to branch 'pr/226'
43
VonC

私はフェッチしてチェックアウトすることを好みますローカルブランチを作成せずにそしてHEADデタッチ状態であること。ローカルマシンを不要なローカルブランチで汚染することなく、プルリクエストをすばやく確認できます。

git fetch upstream pull/ID/head && git checkout FETCH_HEAD

ここで、IDはプルリクエストID、upstreamはオリジナルのプルリクエストです(たとえば、Origin)。

助けになれば幸いです。

25
Andrew Ymaz

Steven Pennyの答えを参考にして、テストブランチを作成してPRをテストするのが最善です。だからここにあなたがすることです。

  1. PRをローカルにマージするためのテストブランチを作成します。マスターブランチにいると仮定します。

git checkout -b test

  1. PRの変更をテストブランチに取り込む

git pull Origin pull/939/head:test

これで、このローカルテストブランチ(この場合はtestという名前)で変更を安全にテストでき、問題がなければGitHubから通常どおりにマージできます。

11
bholagabbar

Github.comを使用している場合は、[プルリクエスト]に移動し、関連するプルリクエストをクリックしてから、[コマンドラインの説明]リンクをクリックします。 command line instructions at Github.com

8
AmitB

git configコマンドを使用して.git/configに新しいルールを書き込み、リポジトリからプルリクエストを取得することができます。

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

そしてそれだけで:

$ git fetch Origin
Fetching Origin
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/container-images/memcached
 * [new ref]         refs/pull/2/head -> Origin/pr/2
 * [new ref]         refs/pull/3/head -> Origin/pr/3
5
SummerBreeze
  1. GithubでPRを開きます。 PRページの上部には、それを識別する番号(123)と作成者のブランチの名前(branch-name)があります。これら両方をコピーしてください。
  2. Git bashを開き、git statusを実行して作業ディレクトリをきれいにします。
  3. git fetch upstream pull/<id>/head:<branch>と入力してPRのコピーを取得します。この例では、git fetch upstream pull/123/head:branch-nameと入力します。
  4. ブランチのコピーができたので、git checkout branch-nameを使用してそれに切り替えます。あなたのディレクトリはPRの正確なコピーになります。自分自身の変更をプルリクエストに直接追加することはできないので、バグや提案について作者に必ず伝えてください。
  5. あなたが彼らの仕事をチェックし終えたら、git checkout masterを使ってあなたのローカルバージョンのProject Porcupineに戻ってください。

ここで完全な指示を見てください--- https://github.com/TeamPorcupine/ProjectPorcupine/wiki/How-to-Test-a-Pull-Request#testing-someone-elses-pull-request

5
yoAlex5

私は誤ってgit-extrasによって提供されるものとほとんど同じものを書いてしまいました。そのため、他の追加コマンドをインストールするのではなく単一のカスタムコマンドを使用する場合は、 このgit-prファイル$PATHのどこかに配置するだけで、次のように記述できます。

git pr 42
// or
git pr upstream 42
// or
git pr https://github.com/peerigon/phridge/pull/1
4
Johannes Ewald

Bitbucketの場合、Wordのpullpull-requestsに置き換える必要があります。

まず、git ls-remote OriginコマンドでプルリクエストのURLスタイルを確認できます。

$ git ls-remote Origin |grep pull
f3f40f2ca9509368c959b0b13729dc0ae2fbf2ae    refs/pull-requests/1503/from
da4666bd91eabcc6f2c214e0bbd99d543d94767e    refs/pull-requests/1503/merge
...

ご覧のとおり、それはrefs/pull-requests/1503/fromではなくrefs/pull/1503/fromです。

それからあなたは答えのどれかのコマンドを使うことができます。

4
osexp2003

上記のオプションのいくつかの問題は、誰かがPRを開いた後にPRにもっとコミットをプッシュした場合、彼らはあなたに最新のバージョンを提供しないことです。私にとって一番うまくいったのは - PRに行き、 'Commits'を押して、一番下までスクロールして最新のコミットハッシュを見ることです enter image description here そしてそれからgit checkoutを使う。

git checkout <commit number>

上記の例では

git checkout 0ba1a50

3
Ariel Gabizon

もしあなたが "github fork"のワークフローをたどっているのであれば、そこではforkを作成してリモートアップストリームレポジトリを追加します。

14:47 $ git remote -v
Origin  [email protected]:<yourname>/<repo_name>.git (fetch)
Origin  [email protected]:<yourname>/<repo_name>.git (Push)
upstream        [email protected]:<repo_owrer>/<repo_name>.git (fetch)
upstream        [email protected]:<repo_owner>/<repo_name>.git (Push)

あなたの現在のブランチに引っ張るためにあなたのコマンドは次のようになります。

git pull upstream pull/<pull_request_number>/head

新しいブランチに引っ張ると、コードは次のようになります。

git fetch upstream pull/<pull_request_number>/head:newbranch
3
init0

私はハブ、githubのツールを使っています。 https://github.com/github/hub

ハブでローカルにプルリクエストをチェックアウトするのはちょっと簡単です。

hub checkout https://github.com/owner/repo/pull/1234
or
hub pr checkout 1234
0
Daniel Wehner