「ブランチを切って作業してください」「ブランチにコミットしてから確認します」。GitやGitHubを使っている開発チームでよく使われる言葉です。
「ブランチ」という言葉、木の「枝(branch)」が語源ですが、IT現場ではどのような意味で使われているのでしょうか。
この記事でわかること
- ブランチとは何か
- ブランチがなぜ必要なのか
- ブランチを使ったチーム開発の流れ
- よく聞く「メインブランチ」「フィーチャーブランチ」とは
ブランチとは?
ブランチとは、Gitでコードの変更履歴を「分岐」させる機能です。
本体のコード(メインブランチ)はそのままにしておきながら、「この機能を新しく作る」「このバグを修正する」という作業を、分岐した作業用スペース(ブランチ)で進めます。作業が完了してレビューが通ったら、本体に統合(マージ)します。
身近な例で考えると
書類作成のたとえが分かりやすいです。
重要な提案書(本体)があるとします。内容を大幅に変更したいけれど、元の内容はそのまま残しておきたい。そこで提案書をコピーして、コピー版で修正を進めます。修正が完成してOKが出たら、元の提案書に反映させます。
この「コピー版を別に作って作業する」という発想がブランチです。
書類でいえばコピーは1人しか作れませんが、Gitのブランチは何個でも作れますし、複数人が並行して別々のブランチで作業することもできます。
料理を例にするなら、シェフ3人が一つのレシピを同時に改良したいとき、1人が原本を持ったまま全員が共通のレシピを書き換えたら大変なことになります。それぞれが「自分のコピー(ブランチ)」で改良を進め、完成したら原本に統合する、というのがブランチの考え方です。
IT現場ではどう使われるか
チーム開発でのブランチの使い方を、簡単な流れで整理します。
- mainブランチ(本体):実際に動いているコードが入っている
- 作業用ブランチを作成:「feature/ログイン機能」など、機能名をつけたブランチを作る
- ブランチで作業:本体とは別の場所でコードを書く。本体には影響しない
- レビュー申請(プルリクエスト):「このブランチの変更を本体に統合していいですか」と申請する
- レビューとマージ:チームメンバーが確認し、問題なければ本体に統合(マージ)する
このフローのおかげで、「未完成の機能が本番環境に混入してしまう」「作業中に本体のコードが壊れる」といった事故を防げます。
よく聞くブランチの名前
- main(または master):本体。本番環境に使われるコード
- develop:開発用の統合ブランチ。各機能をここにまとめてからmainに反映することも
- feature/〇〇:新機能開発用のブランチ。「feature/login」など
- hotfix/〇〇:緊急バグ修正用のブランチ
- release/〇〇:リリース前の最終調整用ブランチ
初心者がつまずきやすいポイント
ブランチが多くて混乱する
複数のブランチが存在すると、「どのブランチで作業していたか」「どのブランチが最新か」がわからなくなることがあります。チームのブランチ命名規則や管理ルールを確認しておくことが重要です。
「マージしたら元のブランチはどうなるか」がわからない
マージしても元のブランチはすぐには消えません。マージ後に不要なブランチを削除するかどうかはチームのルールによります。
ブランチとリポジトリを混同している
リポジトリはプロジェクト全体の保管庫、ブランチはリポジトリの中で分岐した作業スペースです。1つのリポジトリに複数のブランチが存在します。
関連用語
- マージ(Merge):ブランチの変更を別のブランチに統合する作業
- コンフリクト:複数のブランチで同じ箇所を違う内容に変更したときに起きる衝突
- チェックアウト:作業するブランチを切り替えること
- プルリクエスト(PR):マージを申請する仕組み(GitHubなどで使う)
さらに学ぶなら
ブランチを含むチーム開発の全体像を学びたい方には、FEXシリーズのチーム開発の流れ入門講座がおすすめです。