#はじめに
Gitでは登場しない、
GitHub特有のForkとPull Requestについて説明します。
Forkを説明する際、cloneとの違いを出してくる解説がありますが
「なぜcloneではなくforkでないといけないのか」といった部分についても触れます。
それが分かるとより理解しやすくなると思います。
##Forkを一言でいうと
他の人が作成した(リモート)リポジトリを、
自身の(リモート)リポジトリに複製すること
ForkしたリポジトリをローカルにCloneして、作業を行います。
流れを図1に表しました。
##Forkってなんで必要なの?
Forkの説明で、「他の人が作成したリポジトリを直接Cloneすればいいだけでは?」と
思った方がいると思います。
ここが、Forkを使う理由に繋がっています。
GitHubのデフォルトの設定では、
他の人が作成したリポジトリに対してPushする権限がありません。
(GitHubの設定で、作成者が他の人にPush権限を与えることも可能ですがここでは触れません。)
ローカルで編集したソースを自由にPushするためにForkを使うのです。
##Pull Requestを一言でいうと
自身の(リモート)リポジトリを、
他の人が作成した(リモート)リポジトリに
Pushしたいです(=Pullして下さい)と提案(通知)すること
Fork~Pull Requestの流れを図2に表しました。
オレンジの部分が図1に追加で記載した箇所です。
##Pull Requestってなんで必要なの?
この理由は至ってシンプルです。
第3者が相手の許可なしに勝手に変更すると、相手が困るからです。
「変更した内容をあなたのリポジトリに反映したいのですが、宜しいですか?」と
伺いを立てる必要があります。
#まとめ
・Forkを1言でいうと
他の人が作成した(リモート)リポジトリを、
自身の(リモート)リポジトリに複製すること
・Pull Requestを1言でいうと
自身の(リモート)リポジトリを、
他の人が作成した(リモート)リポジトリに
Pullして下さいと相手に提案(通知)すること