GitHubへpull requestする際のベストプラクティス

http://d.hatena.ne.jp/hnw/20110528

登場レポジトリ、ブランチ

[remote base]						作業元プロジェクト
[remote base:master]				最新

[remote baseFork]					github上のレポジトリ
[remote baseFork:master]			最新
[remote baseFork:FeatrueWork]		機能開発作業用
[remote baseFork:FeatrueSummary]	機能公開用

[local  baseFork]					localのレポジトリ
[local  baseFork:master]			最新
[local  baseFork:FeatrueWork]		機能開発作業用
[local  baseFork:FeatrueSummary]	機能公開用

手順

1. GitHubでfork
	clone [remote base] -> [remote baseFork]

2. forkをローカルにclone
	clone [remote baseFork] -> [local baseFork]

3. 作業ディレクトリに移動します。 
	cd [local baseFork]

4. 作業用ブランチで作業
	create branch [remote baseFork:master] -> [local baseFork:FeatrueWork]
	<edit>
	push [local baseFork:FeatrueWork] -> [remote baseFork:FeatrueWork]

5. fork元の更新に追随
	pull [remote base:master] -> [local baseFork:master]
	rebase [local baseFork:FeatrueWork]([local baseFork:master]をベースに)
	
	push [local baseFork:master]      -> [remote baseFork:master]
	push [local baseFork:FeatrueWork] -> [remote baseFork:FeatrueWork] ※rebaseしてるので強制(force)

6. commitを1つにまとめる
	create branch [local baseFork:FeatrueWork] ->  [local baseFork:FeatrueSummary]
	rebase [local baseFork:FeatrueSummary]([local baseFork:master]をベースに)

7. GitHubにブランチをpush
	push [local baseFork:FeatrueSummary] -> [remote baseFork:FeatrueSummary]

8. pull requestする
	pull request [remote baseFork:FeatrueSummary]