web-dev-qa-db-ja.com

プルリクエストからのGitHubクローン?

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

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

104
Fresheyeball

-bコマンドでgit cloneオプションを使用して、目的のブランチを複製できます。

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

git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone
75
inancsevinc

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

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

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

89
Chronial
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をプッシュして開きます

36
wierzbiks

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

使用例

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

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

最初の行は、githubがリモートの名前に置き換えられることを除いて、すべてのリモートの標準です。つまり、リモートヘッド(またはそのサーバー上のブランチのヘッド)は、github/で始まるローカルリモートに「マッピング」されます。したがって、git fetch githubを実行し、GitHubにブランチがあり、それがマシン上でローカルにまだ認識されていなかった場合、ブランチをダウンロードし、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と呼ばれるローカルブランチにいるでしょう(まだ存在していなかったと仮定して)。それは素晴らしいことであり、他の人のリモートまたはブランチを追跡する必要がないことを意味します。

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

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

5
adrianbanks
4
Steven Penny

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]
2
megawac

そのプルリクエストはその人のフォークからのコミットを表示するので、彼がfeature/mongoose-support ブランチ。

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

0
Kartik