GitHubからリポジトリを複製したいと思います。問題は、メインブランチが必要ないことです。 この未承認のプルリクエスト のバージョンが必要です。
メインリポジトリの代わりにプルリクエストバージョンを複製することは可能ですか?
-b
コマンドでgit clone
オプションを使用して、目的のブランチを複製できます。
あなたの場合、クローンを作成したいブランチはプルリクエストのソースブランチです(feature/mongoose-support):
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone
これを行う最も簡単な方法は次のとおりです。
git fetch Origin pull/2/head
git checkout -b pullrequest FETCH_HEAD
これで、プルリクエストの状態にある新しいブランチに移動します。
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をプッシュして開きます
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
)。
git clone git://github.com/dweldon/frappe
cd frappe
git pull Origin pull/2/head
git-extras をインストールした後
(cd /tmp && git clone --depth 1 https://github.com/tj/git-extras.git && cd git-extras && Sudo make install)
$ git pr 62 [remote]
そのプルリクエストはその人のフォークからのコミットを表示するので、彼がfeature/mongoose-support
ブランチ。
彼のリポジトリのクローンを作成し、そのブランチをチェックアウトできます