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

John Wachira 2023年6月20日
GitHub でのフォークとブランチの違い

この記事では、GitHub でのフォークとブランチの違いについて説明します。 コーディングの文脈では、現在の時代はコラボレーションに大きく依存しています。

最もよく使用されるコラボレーション ツールの 1つは GitHub です。 GitHub でのフォークとブランチは、プロジェクトで共同作業するときに最も役立つユーティリティの一部です。

ただし、以下で説明するように、この 2つのユース ケースと意味は異なります。

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

GitHub でフォークするには、個人アカウントにパブリック リポジトリのコピーを作成する必要があります。 この概念は、コードベースの多様な進化を促進します。

発散進化は、あるテーマについて幅広く実験したい人にとって理想的です。

一方、分岐には、起点から分岐を作成することが含まれます。 コードベースの収束的進化を促進します。

ほとんどの企業は、チームの生産性にプラスの影響を与える分岐を好みます。

発散と収束の進化

おそらく、オープンソースの世界では、コードベースが 2つのプロジェクトに同時に分割される可能性があることに気付いているでしょう。 Linux コードベースの例を見てみましょう。

現在、Linux RedHat などのいくつかのフォークがありますが、それらはすべて共通の祖先を持っています。 これは、コードベースの多様な進化の一例です。

これらの反復は一時的な開発パスではなく、相互に統合されることはないことに注意してください。

一方、ブランチは一時的な開発パスです。 コードが master ブランチにマージされると、ブランチは短命になります。

それが、コードベースの収束的進化を促進する理由です。

フォークによって新しいリポジトリが作成される

GitHub では、ボタンを押すだけで簡単にフォークできます。 このアクションにより、フォーク時までのリポジトリの複製が作成されます。

github で fork

いつ分岐するのが理想的ですか?

親と再結合するつもりがなく、独立したプロジェクトを作成したい場合です。

プロジェクトの出発点として最適なプロジェクトを GitHub で見つけることができます。 このような場合は、分岐が理想的です。

GitHub での分岐

ブランチは、コードベースで構築ゾーンの役割を果たします。 ブランチを一時的に使用して、オリジンとマージする目的で機能に取り組みます。

GitHub でブランチを作成するには、すべてのブランチを表示 に移動し、新しいブランチ をクリックします。

github にブランチを作成

新しいブランチをローカルに作成するには、以下に示すように git checkout コマンドを使用します。

$ git checkout -b <new branch>

分岐と分岐のコストはいくらですか

Git は変更されたファイルのみを比較するため、ブランチをマージする方が簡単かつ迅速です。 一方、分岐はより高価であると考えることができます。

フォークを元の親とマージする場合、Git は 2つのリポジトリを比較する必要があります。 フォークすると、親リポジトリ全体の複製が作成されることに注意してください。

新しいブランチのファイル サイズは、親ブランチによって異なります。 フォークは、リモート サーバー上でより多くのスペースを占有します。

可視性が向上し、運用上のリスクが軽減されるため、企業には分岐が推奨されます。

理由は次のとおりです。

プロジェクトの別の機能に取り組んでいる 10 人のチームがあるとします。 各開発者がフォークを作成すると、10 個の異なる独立したリポジトリが作成されます。

これにより、1 か所に 10 個のリポジトリがすべて存在しない限り、全員が何に取り組んでいるかを確認するのが難しくなります。

コードの変更は 10 の異なるリポジトリに存在するため、これは真のコラボレーション環境ではありません。

開発者がフォークではなく 10 の異なるブランチを選択した場合、すべてのコミットが 1つのリポジトリにあるため、より共同作業のスペースになります。 この議論は、可視性の問題に対応しています。

オペレーショナル リスクについて話すとき、次の例を取り上げます。開発者は 10 個のフォークを作成しましたが、1つまたは 2つが何らかの理由で利用できません。 これにより、ナレッジ マネージメントのリスクが生じ、他の開発者は他の開発者がどこに到達したかを知ることができなくなります。

常にそうとは限りませんが、ブランチ中心のワークフローを採用することで回避できるリスクです。

ブランチ中心のワークフローはビジネス環境に最適ですが、分岐はパブリック コラボレーションと実験に最適です。 全員が 1つの目標に向かって作業している場合は、ブランチ中心のワークフローを選択してください。

著者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

関連記事 - Git Fork

関連記事 - Git Branch