バナー画像

GitHubのforkについてまとめています。

GitHubのforkはリポジトリをGitHub内で複製する

fork(派生)とはある時点のリポジトリをベースとして、GitHub上に別のリポジトリとして作成することです。

ソフトウェア開発におけるフォークは、あるソフトウェアパッケージのソースコードから分岐して別の独立したソフトェアを開発することを指しますが、同じようなニュアンスになります。たとえば、ほとんどのLinuxディストリビューションはDebian、Red Hat、Slackwareのいずれかのフォークですし、OpenSSHはSSHからのフォークです。

参考)フォークについて – GitHub Docs

開発現場によっては、ソースコードのマスターのプライベートリポジトリ(GitHub Enterprise)をGitHubに置き、開発メンバー全員がforkして個別のリポジトリを作成し、ソースコードの修正を行ったらpull requestでマスターリポジトリに変更を伝えるという使い方もあるようです。

【関連記事】
GitHub Enterpriseは、企業にうれしい機能がいっぱいあります! 

メンバー全員がリポジトリをフォークするメリットは、GitHubの操作で致命的なミスをしてしまった場合でも、影響範囲はメンバー一人分だけで済むことです。最悪の場合、フォークしなおせばリカバリーできます。複数の開発会社が協業している場合などは、開発会社ごとにリポジトリをフォークすることもあるかも知れません。

GitHubのフォークとクローンの違い

cloneとforkは何が違うんでしょう?cloneとはリポジトリの複製を、単にローカル環境に作成することを言います。ローカルにクローンしたリポジトリに対しては、自由にコミット、プッシュ、マージをおこなうことができます。

forkすると、オリジナルのリポジトリの所有者にforkしたことが通知されます。OSSの開発などでは、forkすること=バグ潰しの手伝いをするなど貢献の意思ありと見なされることがあるようです。面識のないリポジトリオーナーにforkをおこなう際は、注意したほうが良いかも知れません。

単に公開されているリポジトリをベースにして何かを作ろう、とか、ビルドして動きを見てみようという場合ならforkではなくcloneを使うのが良いでしょう。

GitHubのフォークとブランチの違い

一般的には、リポジトリごと分岐(フォーク)するのではなく、同一のリポジトリ内で分岐(ブランチ)することが多いようです。ブランチは、masterブランチと開発ブランチといった大きな分け方のほか、「機能Aの修正用ブランチ」と、修正作業ごとにブランチして、おおもとのブランチに影響を与えないよう作業することが可能です。

フォークを行うと、管理対象がリポジトリ全体となるため、GitコマンドやGitHubに関するより高度な知識が要求されます。

ブランチを作って作業する場合は、上位のブランチに対してpull requestを行います。フォークした場合にソースコードの変更を反映させるには、オリジナルのリポジトリに対してpull requestを行います。フォーク時のpull requestはブランチのpull requestよりも手順が複雑になるというデメリットがあります。

pull requestは、ソースコードの変更のレビューとマージを行う依頼を出すGitの機能です。レビュー担当者がソースコードをレビュー(確認)し、他の修正者との競合や誤りがなければ大元のソースコードにマージ(統合)をおこないます。

GitHubでフォークする手順

GitHubでリポジトリをフォークするには、対象のプロジェクトページを開き、画面右上のForkボタンをクリックします。ボタンの右にある数字はForkされた数です。4K=4,000件以上フォークされていることになります。

fork自体はGitHub内で完結するため、10秒~数十秒程度で完了します。

forkはリポジトリ内のブランチも複製します。また、forkしたリポジトリに対してはリポジトリオーナー権限が付与されるため、リポジトリを自由に変更できます。また、オリジナルリポジトリで変更された内容を同期して取り込むことも可能です。

具体的には、端末機にて、git remote addにて、オリジナルリポジトリをリモートリポジトリとして追加します。これで端末機にはオリジナルリポジトリでの変更箇所が取得できるようになり、forkしたリポジトリにオリジナルでの変更を反映したり、変更内容によっては意図的に反映しないなどの操作が可能になります。

関連)GitHubでFork/cloneしたリポジトリを本家リポジトリに追従する – Qiita

今回は、以下のリポジトリをforkしました。

参考)google-research/google-research: Google Research

GitHubのクライアントツール Fork

GUIベースのGitとして、「Fork」という名前のツールがあります。

関連)Fork – a fast and friendly git client for Mac and Windows

Windows用とMac用があり、GUI上でGitの操作が行なえます。

関連)Git Fork でストレスフリーな gitライフを Git GUI Fork の紹介 – まめ – たんたんめん

Forkには基本機能として以下を備えています。一般の開発者が処理するワークフローに加えて、レビュアーやリポジトリオーナーがおこなう作業も可能です。

ForkはGitの機能を一通り盛り込んでいるため、初見だと多機能で複雑に見えるかも知れません。開発者として最低限のgit操作(コミットやプルリクエスト)が必要な場合は、機能を絞ったGitHub Desktopなどを検討したほうが良いかも知れません。

【関連記事】
GitHub DesktopはWindows用Gitツール インストールと使い方の解説

Forkには以下のような特徴があります。

利用者によると、UIのレスポンスが良い点や、画像ファイルのプレビュー、好きなコマンドを登録しておけるCustom Commandsが便利と、評価されているようです。

Forkは有料で、1ユーザあたり49.99ドル。一度に3台のマシンで使用できます。試用は無料で、試用期間は特に制限されていません。

GitHubのForkのまとめ

ポテパンダの一言メモ
  • GitHubのForkはリポジトリの分岐を表す場合と、Git用ツールを表す場合あり
  • GitHubのFork(リポジトリ分岐)は、GitHub内でリポジトリを複製する
  • GitHubのFork(Gitツール)は、管理機能も含めたGitの機能が使えるGUIツール

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。