2013-09-04 8 views
7

上流のレポから分岐したフォークにpull_requestブランチを作成するためのワークフローがありますので、pull_requestブランチは常に上流の「マスター」と完全に一致しますか? 、フォークを起点(github)で完全に置き換えます

)Iは、親リモートから大きく発散しているフォークを有します。

2)私はフォークを削除しても意味がありませんが、元のアップストリームリポジトリから最小限に発散しているプルリクエストをきれいに発行したいと思います。

したがって、別のリモートのマスターの完全なレプリカであるフォークにブランチを作成する方法はありますか?

+3

'git pull upstream master:upstream-master'? – Ryan

答えて

12

まず、ローカルのmasterブランチを変更しないでください。フィーチャブランチのみを作成する必要があります。今すぐあなたのリモート追跡ブランチupstream/masterupstreamから最新の変更と同期さ

git remote add upstream <url-for-upstream-repo> 
git fetch upstream 

:あなたが変更されていないmasterあなたの地元を続ける場合は、上流のレポから最新の変更を取得することができます。必要に応じて、あなたはまた、あなたがしたい場合は、お近くのmasterを更新することができます。

git checkout master 
git merge upstream/master 

は今、あなたはupstream/masterのオフ機能ブランチを作成することができます。

あなたがから最新の変更を使用して機能ブランチを同期したい
git checkout -b feature upstream/master 

upstreamの場合は、他の誰も機能ブランチで作業していない限り、rebaseを使用できます(そうしないと、変更履歴との再同期が強制されます)。あなたは通常、厄介歴史を作成せずに頻繁希望として機能ブランチを同期するためにそれを使用することができますので、彼らは、マージを作成しないためrebaseは、このワークフローの実際の理想的なコミットです:

git fetch upstream 
git checkout feature 
git rebase upstream/master 

あなたは可能性もgit merge upstream/master代わりにしかし、あなたはマージコミットの後ろに残すでしょう。時間の経過とともに、リベースの代わりにマージすることによって、より複雑な履歴を作成します。

プルリクエストを送信する準備ができたら、originにプッシュして、アップストリームmasterに対してリクエストしてください。

オリジナルポスターは尋ね:

[I]別のリモートのマスターの完璧なレプリカである私のフォークにブランチを作成する方法はありますよ?

限り、ローカルmaster(それはあなたがmasterで直接機能ブランチであなたの仕事をして代わりにしてきたべきではない場合)upstream/masterから分岐していないし、ちょうどあなたの地元のmasterにプッシュして、あなたのorigin:また

git push origin master 

、あなたのorigin/masterにリモート追跡ブランチupstream/masterをプッシュするrefspecを使用することができます。

git push origin upstream/master:master 
+0

これは私が今までにすべてのブランチを使って聞いた最高の議論です/ – jayunit100

関連する問題