GitHubからリポジトリを複製したいと思います。問題は、メインブランチが必要ないことです。この未承認のプルリクエストのバージョンが必要です。
メインリポジトリの代わりにプルリクエストバージョンを複製することはできますか?
GitHubからリポジトリを複製したいと思います。問題は、メインブランチが必要ないことです。この未承認のプルリクエストのバージョンが必要です。
メインリポジトリの代わりにプルリクエストバージョンを複製することはできますか?
回答:
-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 pull/2/head
git checkout -b pullrequest FETCH_HEAD
これで、プルリクエストの状態にある新しいブランチに移動します。
次のコマンドを実行してエイリアスを設定することができます
git config --global alias.pro '!f() { git fetch -fu ${2:-origin} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f'
これで、PRを実行するか、githubリモートに名前が付けられていない場合にgit pr <pr_number>
、PRをチェックアウトできgit pr <pr_number> <remote>
ますorigin
。
.gitconfig
下のファイル[alias]
:pr = "!f() { git fetch $1 pull/$2/head:pull_$2; git co pull_$2; }; f"
。そのように入力するだけでgit pr upstream 62
、次は知っています。アップストリームからPR#62の新しいブランチにいます!常に使用しているorigin
場合は、の代わりにハードコードすることもできますが$1
、それは私のために切り替わります。
co
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 https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone
から要点文書に到達することはなかっただろう。
git fetch github
するとき、あなたはそうすることができますgit co -t github/pr/#
。これにより、リモートURLをコピーして貼り付けたり、ブランチ名を特定したりする必要がなくなります。その後、余分な手間をかけずに、適切な名前の簡潔で正確なブランチ名を取得できます。しかし、私はそれが圧倒的に見えるかもしれないことを理解しています。
git clone git://github.com/dweldon/frappe
cd frappe
git pull origin pull/2/head
git pull
現在のブランチにマージを作成します。通常、PRの場合はgit fetch
、元の作成者のコードを取得するだけです(その後、FETCH_HEADとしてアクセスできます)。マージが必要な場合は、pull/2/merge
(の代わりにpull/2/head
)言及する価値もあります。これにより、GitHubは、[Merge]ボタンをクリックしたときに発生する正確なマージコミットを提供します。
ユーザーがプルリクエストを送信すると、フォークのクローンのブランチから別のユーザーのリポジトリにマージする変更をいくつか要求します。
必要な変更は、プルリクエストのソースから取得できます。これを行うには、ユーザーのリポジトリのクローンgit://github.com/berstend/frappe.git
を作成し(feature/mongoose-support
)、プルリクエストを作成したブランチをチェックアウトします()。
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]
clone
なく、ためにfetch
参照してください:stackoverflow.com/questions/6743514/...