PR

GitHub:ブランチとは?(branchとは)3分で初心者向けに解説

IT-Skills

GitHubのブランチはプロジェクト内で複数の作業を同時に行うための機能。ブランチを使うことで、メインのコードベースに影響を与えることなく新しい機能を開発したり、バグを修正したりすることができます。

関連 【初心者向け】GitHubとは?使い方を1からわかりやすく解説

より具体的にざっくり説明すると、ブランチはリポジトリ内に複製される別の作業フォルダのようなものです。別に言い方をするとプログラムに改修をする際に一時的に生み出される別の世界線のようなもので、この世界線で作業することで現実の世界線には影響を与えずに作業することを可能にする仕組み。

このページではブランチの基本的な仕組みや、マージプルリクエストといったブランチにまつわる基本知識をご説明します。

スポンサーリンク

ブランチとは?

ブランチはプロジェクトの中で独立して作業を進めるための「作業場」や「実験場」のようなものです。「実験場」で作業することで、メインのコードベースに影響を与えずに新しい機能の開発やバグ修正を行うことができます。

例えば、プロジェクトのメインブランチ(通常は「main」や「master」と呼ばれます)は、安定したバージョンを保管しています。これが「完成された場所」だと考えてください。しかし、新しい機能を追加したり、バグを修正したりする場合、直接この「完成された場所」で作業するのはリスクがあります。そこで別の「実験場」(ブランチ)を作成して、その中で自由に作業を進めるということ。

以下がそのイメージ図。リポジトリ内に複製される別の作業場だと理解しましょう。

ブランチとは
図1:ブランチとは?

もし、新たに作成した「実験場」(ブランチ)での改修が成功したら、その資源をメインブランチに合体させます。こうすることで、大事な資源には影響を与えずにプログラムの改修やテストが可能になる、という仕組みです。

実際の流れ
  • ステップ1
    ブランチの作成

    メインブランチから新しいブランチを作成。これで新しい「実験場」が誕生。

  • ステップ2
    ブランチでの作業

    新しいブランチでコードの変更や新機能の開発、バグ修正を実施。

  • ステップ3
    テスト/検証

    ブランチ内での変更が正しく動作するかを確認。問題がなければ次のステップに進む。

  • ステップ4
    プルリクエストの作成

    変更が完了しテストに合格したら、メインブランチに統合するためのプルリクエストを作成。

  • ステップ5
    統合(マージ)

    プルリクエストが承認されるとブランチの変更がメインブランチに統合される。これで「実験場」での成果が正式にプロジェクトの一部となる。

このように、ブランチを使うことで安全かつ効率的にプロジェクトを進めることができます。ブランチは、メインのコードベースを保護しつつ、新しいアイデアや変更を試すための「別の場所」や「実験場」としての役割を果たします。

プルリクエストとは?(PR)

プルリクエスト(Pull Request/PR)は、作業ブランチ(実験場)での作業をメインのブランチに取り込むための「リクエスト(要求)」のこと。ブランチで行った変更が他のチームメンバーによって確認され、承認された後にメインのコードベースに統合されていくための、レビュー機能のようなものです。

プルリクエストは、変更内容をレビューし問題がないか確認するための重要な手続きです。

プルリクエストの流れ
  • ステップ1
    作業完了後にプルリクエストを作成

    ブランチでの作業が完了しすべての変更をコミットした後、そのブランチをメインブランチに統合したい場合にプルリクエストを作成。

  • ステップ2
    GitHubでの操作

    GitHub上のリポジトリページにアクセスし「Pull requests」タブをクリック。その後「New pull request」ボタンをクリックして、新しいプルリクエストを作成。

  • ステップ3
    変更内容の確認と説明

    プルリクエストを作成する際にはどのブランチからどのブランチに変更を統合するのかを選択します(例えば「feature-branch」から「main」へ)。続いて、プルリクエストのタイトルと説明を書きますが、ここでは、どのような変更を行ったのか、その変更の目的や理由を明確に記載します。

  • ステップ4
    レビューとコメント

    プルリクエストを他のチームメンバーがその変更内容をレビュー。レビューアは、コードを確認し、問題がないかチェック。改善点や修正が必要な部分についてコメントを残すこともあります。

  • ステップ5
    修正と更新

    レビューアのコメントを受けて、必要に応じて変更を修正。修正後は再度プルリクエストを更新し、再レビューを依頼。

  • ステップ5
    承認とマージ

    レビューアが変更を承認すると、プルリクエストをメインブランチにマージすることができます。これで、ブランチで行った変更がメインのコードベースに統合され、プロジェクトに反映されます。

GitHub上でのプルリクエストのリクエスト先

GitHub上でのプルリクエストのリクエスト先(レビューア)は、主に以下の2つの方法で決まります。

1. GitHub上での選択

プルリクエストを作成する際に作成者が特定のレビューアを選択することができます。この方法では、以下の手順でレビューアを指定します。

  1. プルリクエストの作成
    • ブランチでの作業が完了し、GitHub上でプルリクエストを作成。
  2. レビューアの選択
    • プルリクエストの作成ページで、「Reviewers」セクションがあります。このセクションでレビューを依頼したいチームメンバーを選択することができます。選択されたレビューアに通知が送られ、レビューを行う流れ。

2. 事前定義

プロジェクトの設定やリポジトリの管理者によって、特定のファイルやディレクトリに対するコードオーナーを事前に定義することができます。これにより特定の部分に変更があった場合、自動的にレビューアが割り当てるようにすることもできます。

  1. CODEOWNERSファイルの作成
    • リポジトリ内に.githubディレクトリを作成し、その中にCODEOWNERSというファイルを置きます。
  2. コードオーナーの定義
    • CODEOWNERSファイル内で、特定のファイルやディレクトリに対して、レビューア(コードオーナー)を指定。例えば、以下のように記述します。
# 全てのファイルに対するコードオーナー
*       @team-member1 @team-member2

# 特定のディレクトリに対するコードオーナー
/src/   @specific-owner

# 特定のファイルに対するコードオーナー
/README.md   @documentation-owner

GitHub上でのプルリクエストのリクエスト先は、作成時に手動で選択するか、事前にCODEOWNERSファイルで定義する方法の2つが存在します。手動で選択する方法は柔軟性があり、その都度レビューアを決めることができます。事前定義する方法は、プロジェクトの規模が大きい場合や、特定の部分に対して常に同じ人がレビューを行う必要がある場合に便利です。

どちらの方法も、プロジェクトのレビュー体制を整えるために有効です。

マージとは?(Merge)

プルリクエストはあくまでもレビュー機能。レビュー完了したら自動で「実験場」の資源が本番資源に統合されるわけではありません。(事前に自動でマージされる仕組みを構築することもできますが、これは後述。)

ここで必要となるのがマージです。マージを正式に説明すると、異なるブランチで行われた変更を1つに統合する操作のことです。GitHubでは、この操作をGUI上から簡単に行うことができます。

コンフリクト(conflict)

マージする際の注意点がコンフリクト(conflict)です。コンフリクトは異なるブランチで行われた変更が競合し、マージが自動的に行えない状態のことを指します。これは、同じファイルの同じ部分が異なる方法で変更されたときに発生します。コンフリクトは、手動で解決する必要があります。

コンフリクトは以下のような状況で発生します。

  1. 同じファイルの同じ行を変更: 異なるブランチで同じファイルの同じ行を異なる内容に変更した場合。
    • mainブランチでREADME.mdの1行目を「Welcome to our project」に変更。
    • feature-branchで同じ行を「Welcome to the best project」に変更。
  2. ファイルの削除と変更: 一方のブランチでファイルが削除され、他方のブランチで同じファイルが変更された場合。

自動マージの設定方法

GitHubには、特定の条件が満たされた場合にプルリクエストを自動的にマージする機能があります。以下の設定を行うことで自動マージの仕組みを実現することができます。

  1. 保護されたブランチの設定: リポジトリの設定で、メインブランチに対して保護されたブランチルールを設定します。これにより、特定の条件が満たされるまでマージがブロックされます。
    • リポジトリの「Settings」タブを開く。
    • 左側のメニューから「Branches」を選択し、「Branch protection rules」セクションで「Add rule」をクリック。
    • 保護したいブランチ(例:main)を選択し、マージ条件(例:ステータスチェックの合格、レビューの完了)を設定。
  2. 自動マージの有効化: プルリクエストのページで「Allow auto-merge」オプションを有効にします。このオプションは、保護されたブランチのルールが満たされた場合にプルリクエストを自動的にマージします。
    • プルリクエストを作成または開いた状態で、「Allow auto-merge」ボタンをクリック。

まとめ ブランチ、プルリクエスト、マージ

概念説明主な役割
ブランチプロジェクト内で独立した作業を行うための「別の場所」や「実験場」。新しい機能開発やバグ修正に使用。メインのコードベースに影響を与えずに、独立した変更や追加作業を行うためのスペースを提供。
プルリクエスト作業ブランチでの変更をメインブランチに取り込むための「リクエスト(要求)」。レビューを依頼する。変更内容をレビューし、問題がないか確認してからメインブランチに統合するためのプロセス。
マージ異なるブランチの変更を1つに統合する操作。ブランチでの変更をメインブランチに取り込み、プロジェクト全体に反映させる。
コンフリクト異なるブランチの変更が競合し、マージが自動的に行えない状態。手動で競合する変更内容を調整し、修正を行う必要がある。
自動マージ特定の条件が満たされた場合にプルリクエストを自動的にマージする設定。プロジェクトの管理が効率化されるが、十分なレビューが行われていることが前提。

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
IT-Skills
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました