「fork(フォーク)」はGitHubを使って共同開発をする際などによく行われます。forkを活用することで、共同での開発をよりスムーズにすすめられるためです。
この記事では、フォークとは何かやフォークとよく混同されるクローンとの違い・使い分けについて解説しています。その上で、フォークの具体的な使い方も解説しているので、あわせて参考にして下さい。
※すでにGitやGitHubの初期設定がすんでいるものとして解説しております。
Gitの初期設定については、以下記事を参考にして下さい。
GitHubは世界中のエンジニアが開発を行う際に、プログラムのソースコードを共有するのに利用しているサービスです。初めてGitHubを使うときは、GitHub独自のルールや使い方を把握する必要があります。ただ、GitHubで使うコマンドや管理画面の操作は難しくないので、1度理解すれば簡単に使えるでしょう。 なおGitHubの基本的な知識については、以下記事で解説しています。GitHubの概要から学…
目次
リポジトリのフォーク(fork)とは?
「フォーク」とはGitHub上で他ユーザーが所有するリポジトリを、自アカウントのリポジトリへコピーすることです。フォークを活用することで、親リポジトリに影響を及ぼすことなく、自リポジトリ内でコピーしたプログラムを編集できます。
フォークは、GitHubを使って共同開発をする際や自己学習をする際に行われることが多いです。対象のリポジトリをフォークすれば、ユーザーは親リポジトリへの影響を考慮せず自由に変更を試せます。
フォーク(fork)とクローン(clone)の違い
フォーク(fork)とクローン(clone)は、混同されることが少なくありません。いずれも、リポジトリをコピーする操作であるという点で共通しているからです。それでは、両者の違いはどこにあるのでしょうか。
まずフォークでは、親リポジトリのコピーがGitHub上の自リポジトリへコピーされます。フォークした場合、親リポジトリの所有者に通知されるのも特徴です。フォークを実行した際は、GitHubの以下機能を使うこともできます。
- 親リポジトリが更新された場合に、その更新をコピー先のリポジトリへ反映させる
- コピー先のリポジトリの更新内容を、親リポジトリへ提案する(プルリクエスト)
- 上記で提案された更新内容を親リポジトリの所有者が承認して、親リポジトリに反映させる
一方でクローンとは、リモートリポジトリをローカルのPC内へシンプルにコピーする操作を指します。フォークと異なり、クローンを実行しても親リポジトリの所有者に通知はされません。またプルリクエスト等の機能も持たないため更新を提案する場合、リモートリポジトリの所有者へメールなどで別途連絡をとる必要があります。
フォークで開発をすすめるときの流れ
フォークを使い他のユーザーと共同で開発する際、一般的には以下の流れで作業をすすめます。
① リモートリポジトリ(親)をコピー(フォーク)する
② リモートリポジトリ(子)をローカルのPCへコピー(クローン)する
③ ローカルのリポジトリ(子)で開発をすすめ、GitHub上のリモートリポジトリへプッシュ&マージする
④ リモートリポジトリ(親)の所有者へ変更を通知しレビューを依頼するため、プルリクエストを送信する
⑤ プルリクエストを受け取ったリモートリポジトリ(親)の所有者は、変更内容をレビューし問題がなければマージする
プルリクエストによって変更箇所が通知された場合、変更箇所がわかりやすく比較表示されます。さらにコメント機能も付属しているので、レビューがしやすいのです。
フォークのやり方
フォークは、GitHub上のWeb UIで実行が可能です。以下、フォークのやり方を1つずつみていきましょう。
GitHub上でフォークを実行する
まずGitHub上で、フォークしたいリポジトリへ移動します。
画面右上の「Fork」をクリックします。Forkの横に記載されている数字は、このリポジトリがこれまでフォークをされた回数です。
「Create a new fork」画面が表示されます。以下項目を適宜入力・選択し、「Create fork」をクリックして下さい。
項目 | 概要 |
---|---|
Owner | リポジトリの所有者を選択します。デフォルトでは自分自身のアカウント名が表示されているので、そのままでかまいません。 |
Repository name | フォークしたリポジトリの名前を付けます。デフォルトで表示されているのは、フォーク元のリポジトリ名です。特に問題なければそのままでもかまいません。 |
Description | フォークに関する説明を任意で入力します。デフォルトで表示されているのは、フォーク元の説明です。特に問題なければそのままでもかまいません。 |
Copy the main branch only | このチェックを外すと全てのブランチがコピーされます。チェックを入れたままにするのが一般的です。 |
フォークが完了し、リポジトリのコピーが作成されました。
フォークしたリポジトリをクローン(コピー)する
フォークしたリポジトリを、ローカルのPCへクローン(コピー)して編集できるようにしましょう。
GitHub上で該当のリポジトリを開き「Code」をクリックします。リポジトリのURLが表示されるので、URL欄の横にあるコピーボタンをクリックして下さい。
次にgit bashなどのコマンドラインツールを開いて、クローン先のディレクトリへ移動します。(適当なディレクトリがない場合は、あらかじめ作成しておきます。)
次に、以下コマンドでクローンを実行してください。
git clone 【クローン先のURL】
クローン先のURLには、先程コピーしたURLを貼り付けてください。
以下のように表示されれば、クローンは完了です。ローカルのディレクトリで適宜編集を行って下さい。
フォークを行うときの注意点
公開されているリポジトリであれば、自由にフォークを行えます。ただしフォークすると、そのリポジトリ所有者に通知されることは覚えておきましょう。
気を付ける必要があるのは、オープンソースのソフトウェア開発目的で公開されているリポジトリをフォークする際です。この場合、フォークを行うと「バグ解消の手伝いをする意思がある」とみなされることがあります。そのため面識のない所有者のリポジトリは、フォークするのに気を付けた方がよいです。
公開されているリポジトリを学習目的などで編集したいといった場合、相手に通知が行われないクローンを使う方が無難といえます。クローンでも、目的のリポジトリを自由に編集可能です。
まとめ
GitHubにおけるフォークとは、別のユーザーが所有するリポジトリを自リポジトリへコピーすることです。フォークを行えば、親リポジトリに影響を与えることなく、自由に目的のプログラムを編集できます。またフォークしたリポジトリを編集したあとに、親リポジトリの所有者へレビューを依頼するプルリクエスト等の操作も利用が可能です。
フォークとよく混同される「クローン」は、リモートリポジトリをローカルリポジトリへコピーする操作を指します。たとえばフォークしたリポジトリを、クローンによってローカルリポジトリへコピーして、自端末で編集するわけです。共同での開発を円滑にすすめるためには、フォークとクローンを適切に使い分けるとよいでしょう。
KAGOYAのレンタルサーバ―はSSH機能を備えているため、Gitコマンドをご利用いただけます!
リーズナブルなプランからハイスペックなプランまで選択可能なため、事業用や練習用など用途に合わせて選ぶことができます。
【入門】GitHub からレンタルサーバーにコマンドひとつでアップする方法
Webサイトのコードや、WordPressの自作テーマ、カスタマイズしたテーマを GitHub で管理する場合、開発したソースコードを Webサーバーに公開する方法はいくつかあります。この記事では GitHub とレンタルサーバーを SSH 接続し、GitHub からレンタルサーバーへ Clone(Pull)することで公開する手順を解説します。 なお、GitHubについて詳しくは以下のページで解説…