Linuxコマンドの基本:Git:ブランチを使う①

 ここでは、ブランチを使うメリットやブランチの基本操作(一覧表示、作成、切り替え)を紹介します。また、各コマンドには詳細な解説を加え、ブランチの概念を理解しやすくします。


なぜブランチを使うのか

 ソフトウェア開発では、新機能の実装や不具合修正など、複数の作業が同時並行で進められることが珍しくありません。Gitの「ブランチ」は、こうした並行作業をスムーズに行うためのしくみの1つです。

 ブランチとは、コミット履歴の分岐(枝)を表すものです。1つの基点(コミット)から別の方向へ変更履歴を枝分かれさせることで、異なる作業内容を独立した流れとして管理できます。これにより、以下のようなメリットが生まれます。

  • 新機能開発と不具合修正を別々のブランチで進められる。
  • 互いに影響を与えずに作業でき、途中で切り替えも簡単。
  • 開発の進行状況を明確に保ちながら、必要なときにメインブランチ(通常mastermainと呼ばれる)へ統合できる。

Gitのブランチ図

ブランチの基本概念

 Gitのブランチは、履歴上の特定のコミットを指し示す「ラベル」のような存在です。通常、リポジトリを初期化した際にmaster(あるいはmain)というメインのブランチが作成され、そこへコミットが積み重なっていきます。新しいブランチを作成すると、そのブランチは指定したコミットを起点として、新たなコミットの流れを形成できます。

以下は、ブランチ操作に関する主なコマンド一覧と解説です。

コマンド役割・詳細解説使用例
git branch現在のリポジトリに存在するブランチ一覧を表示します。*印が付いているブランチが現在いるブランチです。$ git branch
git branch <ブランチ名>新しいブランチを作成します。まだ切り替えは行われず、ブランチは一覧に追加されるのみです。$ git branch feature-name
git checkout <ブランチ名>指定したブランチへ切り替えます。切り替えると、ワークツリーに展開されるファイル群が変更され、そのブランチに対応した状態になります。$ git checkout feature-name

実際の流れ(例)

1.ブランチ一覧の確認

リポジトリ作成直後は、master(またはmain)ブランチのみが存在します。

$ git branch
* master

*印が付いたmasterブランチが現在使用中のブランチです。

2.新しいブランチの作成

新たな機能開発をするために、function-nameというブランチを作成します。

$ git branch function-name

ブランチ一覧を見るとfunction-nameが追加されていますが、まだmasterブランチにいます。

$ git branch
  function-name
* master

3.ブランチの切り替え

【書式】ブランチを切り替える
git checkout <移動先ブランチ名>

git checkoutコマンドでfunction-nameブランチに移動します。

$ git checkout function-name
Switched to branch 'function-name'

 再度git branchで確認すると、* function-nameと表示され、function-nameブランチが現在のブランチになっています。

$ git branch
* function-name
  master

 ここまでの履歴の状態は、下図のとおりです。まだfunction-nameブランチには何もコミットしていないので、function-namemasterは同じコミットを指しています。

 ここでコミットを行うと、現在のブランチが指し示す先が新しいコミットに移ります。つまり、現在のブランチのコミットが1つ先に進みます。現在、function-nameブランチにいるので、下図のようになります。

4.masterブランチに戻る

 function-nameブランチで作業を進めてコミットすると、function-nameブランチの履歴が更新されます。一方、masterブランチをgit checkout masterで切り替えれば、function-nameブランチの変更が反映されていない状態に戻せます。このように、各ブランチは独自のコミット履歴を持つため、複数の作業を並行して進めることが可能になります。

masterブランチに戻る

$ git checkout master
Switched to branch 'master'

 masterブランチに戻ってからワークツリーのファイルを確認すると、function-nameブランチで行った修正がなくなっていることがわかります。この状態でコミットをすると、function-nameブランチはそのままで、masterブランチのコミットが1つ進みます。現在の状態は下図のようになります。


まとめ

  • ブランチはコミット履歴の枝分かれを表し、別々の作業を独立した流れとして扱える。
  • git branchでブランチを作成・一覧確認、git checkoutでブランチを切り替える。
  • ブランチを使うことで、新機能追加や不具合修正を同時並行で進行し、後から簡単に切り替え・統合可能。

 これらを習得すれば、より効率的で整理された開発フローを構築できます。次回は「Git:ブランチを使う②」にてブランチ同士を統合するgit mergeなどの操作を解説します。