GitHubからリポジトリのクローンを作成したいと思います。問題は、メインブランチが必要ないことです。この未承認のプルリクエストのバージョンが必要です。
メインリポジトリの代わりにプルリクエストバージョンを複製することは可能ですか?
GitHubからリポジトリのクローンを作成したいと思います。問題は、メインブランチが必要ないことです。この未承認のプルリクエストのバージョンが必要です。
メインリポジトリの代わりにプルリクエストバージョンを複製することは可能ですか?
これを行う最も簡単な方法は次のとおりです。
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
。
-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
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を開きます
この要点の指示に従って、リポジトリとブランチを把握しなくても、リモートを直接チェックアウトできるようにすることができます。
使用例
私のプロジェクトの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 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 clone git://github.com/dweldon/frappe
cd frappe
git pull origin pull/2/head
ユーザーがプルリクエストを送信すると、フォークのクローンのブランチから別のユーザーのリポジトリにマージされる変更を要求しています。
必要な変更は、プルリクエストのソースから取得できます。これを行うには、ユーザーのリポジトリのクローンを作成し(git://github.com/berstend/frappe.git
)、次にユーザーがプルリクエストを作成したブランチをチェックアウトします(feature/mongoose-support
)。
Githubの公式の新しいコマンドラインインターフェイスを使用:
gh repo clone org/repo
cd repo
gh pr checkout 44
ここ44
で、はPR番号ですが、ブランチ名にすることもできます。
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]
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
「-b」オプションで受け入れられた答えは私にはうまくいきませんでした、それでこれは私が最終的に得たものです。プルリクエストがGithubで作成されると、次のようなページが表示されます。ここで、「ogryb」は私のユーザー名であり、「patch-1」はそれに割り当てられた自動生成された名前です。
ここで行う必要があるのは、右側で強調表示されている名前をクリックすることだけです。これにより、次のリンクがあるページに移動します。
緑色の[コード]ボタンの右側をクリックすると、クローン作成や既存のプルリクエストへの変更の追加に使用できるパーソナライズされたgitリンクが表示されます。
feature/mongoose-support
そのプルリクエストは、その人のフォークからのコミットを示しているので、彼がブランチから変更をプッシュしていることがわかります。
彼のリポジトリのクローンを作成して、そのブランチをチェックアウトできます