質問: いくつかのOSSのREADMEのcontributingセクションを読むと、以下のような手順でプルリクを送るように書かれていることが多いことに気がつきました。 1. フォーク 2. 新しいブランチを追加 3. コードを書く 4. プルリクエストを送る フォークではなく、クローンではダメなのでしょうか。 新しいブランチを追加せずに、masterブランチを直接編集するのはダメなのでしょうか。 多分ダメなのでしょうが、なぜダメなのか理由を教えてください。
回答: 自分用のリモートリポジトリが無いと、自分のローカルへクローンしたリポジトリに増やしたコミットをどこのリモートリポジトリへ `git push` するのかという問題が起こります。オリジナルのリポジトリへのプッシュは通常できません。このため、オリジナルをフォークして自分用リモートリポジトリを作り、そこへ一度 `git push` し、オリジナルへマージしてもらうリクエストを出します。 また、`master` ブランチにはできる限り常に「動くもの」を置いておきたいという理念に沿うと、作業は新しいブランチで行うのが自然です。他にも新しいブランチで作業しないと困ることはいくつかあって、たとえば複数のプルリクエストを同時に書きたくなった場合 `master` ブランチで作業していると困ります。 今回の方法は GitHub flow と呼ばれている手法です。この言葉で調べるともう少し具体的なイメージが掴めるかと思います。