166

GitHubからリポジトリのクローンを作成したいと思います。問題は、メインブランチが必要ないことです。この未承認のプルリクエストのバージョンが必要です。

メインリポジトリの代わりにプルリクエストバージョンを複製することは可能ですか?

4

13 に答える 13

150

これを行う最も簡単な方法は次のとおりです。

git fetch origin pull/2/head
git checkout -b pullrequest FETCH_HEAD

これで、プルリクエストの状態にある新しいブランチに移動します。

を実行してエイリアスを設定することをお勧めします

git config --global alias.pr '!f() { git fetch -fu ${2:-origin} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f'

git pr <pr_number>これで、を実行するかgit pr <pr_number> <remote>、githubリモートの名前が指定されていない場合にPRをチェックアウトできますorigin

于 2013-02-20T00:04:48.470 に答える
109

-bオプションとプルリクエストを使用して、必要なブランチのクローンを作成できます。

git clone https://github.com/user_name/repo_name.git -b feature/pull_request_name dir_name

あなたの場合、複製したいブランチはプルリクエストのソースブランチです(feature/mongoose-support):

git clone https://github.com/berstend/frappe.git -b feature/mongoose-support ./mongoose-support
于 2013-02-19T00:42:41.277 に答える
49
git fetch origin refs/pull/PR_NUMBER/head:NEW_LOCAL_BRANCH

例えば:

git fetch origin pull/611/head:pull_611
git checkout pull_611

変更を加え、コミットし、プッシュして、GitHubのフォークから新しいPRを開きます

于 2015-02-20T05:12:21.130 に答える
17

この要点の指示に従って、リポジトリとブランチを把握しなくても、リモートを直接チェックアウトできるようにすることができます。

使用例

私のプロジェクトの1つ(github3.py)には、次のものがあります。github3.py/.git/config

[remote "github"]
    fetch = +refs/heads/*:refs/remotes/github/*
    fetch = +refs/pull/*/head:refs/remotes/github/pr/*
    url = git@github.com:sigmavirus24/github3.py

github最初の行は、リモートの名前に置き換えられた例外を除いて、すべてのリモートの標準です。これが意味するのは、リモートヘッド(またはそのサーバー上のブランチのヘッド)が、プレフィックスが.であるローカルリモートに「マップ」されるということgithub/です。したがって、git fetch githubGitHubにブランチがあり、自分のマシンでローカルにまだ認識されていない場合は、ブランチがダウンロードされ、次のように切り替えることができますgit checkout -t github/branch_name

2行目も同じことをしますが、標準のgitブランチの代わりにプルリクエストに対して行います。それがあなたが見る理由ですrefs/pull/*/head。GitHubで各プルリクエストのヘッドをフェッチし、にマップしgithub/pr/#ます。したがって、誰かがプルリクエストを送信し、それが62と番号付けされている場合(たとえば)、次のようにします。

git fetch github
git checkout -t github/pr/62

そして、あなたはと呼ばれるローカルブランチにいるでしょうpr/62(それがまだ存在していなかったと仮定して)。それは素晴らしく、他の人のリモートやブランチを追跡する必要がないことを意味します。

于 2013-02-19T00:45:26.613 に答える
16
git clone git://github.com/dweldon/frappe
cd frappe
git pull origin pull/2/head

所有していないブランチのマージされていないプルリクエストをフェッチするにはどうすればよいですか?

于 2015-09-08T00:29:03.517 に答える
7

ユーザーがプルリクエストを送信すると、フォークのクローンのブランチから別のユーザーのリポジトリにマージされる変更を要求しています。

必要な変更は、プルリクエストのソースから取得できます。これを行うには、ユーザーのリポジトリのクローンを作成し(git://github.com/berstend/frappe.git)、次にユーザーがプルリクエストを作成したブランチをチェックアウトします(feature/mongoose-support)。

于 2013-02-19T00:43:50.737 に答える
4

Githubの公式の新しいコマンドラインインターフェイスを使用

gh repo clone org/repo
cd repo
gh pr checkout 44

ここ44で、はPR番号ですが、ブランチ名にすることもできます。


追加の詳細とオプション、およびインストール手順を参照してください。

于 2020-04-27T14:05:42.830 に答える
3

PRを現在のブランチにプルするには、次を使用します。

git pull origin pull/418/head

ここpull/{no. of PR}/head

ここに画像の説明を入力してください

于 2021-09-08T18:13:30.873 に答える
2

私にとって、それは

git fetch origin pull/4/head

ここ4で見つかった場所:

ここに画像の説明を入力してください

于 2020-02-03T01:44:13.273 に答える
1

git-extrasをインストールした後

(cd /tmp && git clone --depth 1 https://github.com/tj/git-extras.git && cd git-extras && sudo make install)

簡単に使用できますgit pr

$ git pr 62 [remote]
于 2015-01-11T03:22:06.717 に答える
1

PRの一覧表示と取得に関するBitBucketの規則:

git ls-remote origin 'refs/pull-requests/*'
git fetch origin refs/pull-requests/998/from:local-branch-name

ここに完全な記事:https ://www.atlassian.com/git/articles/pull-request-proficiency-fetching-abilities-unlocked

于 2021-06-02T10:37:22.527 に答える
0

「-b」オプションで受け入れられた答えは私にはうまくいきませんでした、それでこれは私が最終的に得たものです。プルリクエストがGithubで作成されると、次のようなページが表示されます。ここで、「ogryb」は私のユーザー名であり、「patch-1」はそれに割り当てられた自動生成された名前です。

ここに画像の説明を入力してください

ここで行う必要があるのは、右側で強調表示されている名前をクリックすることだけです。これにより、次のリンクがあるページに移動します。

ここに画像の説明を入力してください

緑色の[コード]ボタンの右側をクリックすると、クローン作成や既存のプルリクエストへの変更の追加に使用できるパーソナライズされたgitリンクが表示されます。

于 2020-11-12T16:50:24.817 に答える
-1

feature/mongoose-supportそのプルリクエストは、その人のフォークからのコミットを示しているので、彼がブランチから変更をプッシュしていることがわかります。

彼のリポジトリのクローンを作成して、そのブランチをチェックアウトできます

于 2013-02-19T00:36:15.273 に答える