【Git】ローカル開発/ブランチ開発でよく使うコマンド一覧

ローカル開発で使う Git のブランチ関連コマンドを、用途別にまとめました。各コードブロックの右上にあるボタンでそのままコピーできます。

ブランチの一覧を確認するコマンドは?

git branch です。ローカルのブランチが一覧表示され、現在いるブランチの先頭に * が付きます。リモート追跡ブランチまで含めて見たいときは -a を付けます。

git branch
git branch -a
【まずはこちら】ローカル開発/基本操作でよく使うコマンド一覧

Gitをインストールし、Git管理対象となるプロジェクトフォルダを用意したあとの操作をまとめています。

目次

そもそもブランチとは?

ブランチとは、特定の開発作業(サイトに特定の機能を追加する、など)を独立して進めるための作業領域のことです。特にチーム開発では欠かせない仕組みで、個人開発においても組織的なコード管理と効率的な開発フローを実現できます。

ブランチでの作業が完了したら、その変更を主ブランチに「マージ」することで、その機能をプロジェクト全体に統合できます。もしブランチで開発した内容が期待通りに機能しない場合は、簡単に元のソースコードに戻すこともできます。

mainブランチから枝分かれしたブランチで開発し、mainへマージする流れの図

ブランチ開発のメリット

元のソースコード(通常は「master」や「main」と呼ばれる主要なブランチ)から切り離し、そちらに影響を与えることなく開発を進めることでリスクを最小化できるのが最大のメリットです。新機能の開発はもちろん、バグ修正などにも利用でき、一つのプロジェクト内で複数人が複数の開発を同時に進められるのもポイントです。

個人で開発する場合のブランチの有用性は?

個人開発においても、組織的なコード管理と効率的な開発フローを実現できます。
新しい試みを安全に行いながら、必要に応じて元の状態に戻すことも容易になり、ソースコードの管理に最適です。

ブランチ開発の基本コマンド

この章で扱うコマンドの一覧です。表の右上のボタンで表全体をコピーできます。

やりたいことコマンド
ブランチを作るgit branch ブランチ名
ブランチを移動するgit switch ブランチ名
作成と移動を同時に行うgit switch -c ブランチ名
ブランチの一覧を見るgit branch
リモート追跡ブランチも含めて見るgit branch -a
ブランチを統合するgit merge ブランチ名
ブランチを削除するgit branch -d ブランチ名
ブランチを強制的に削除するgit branch -D ブランチ名
分岐を含む履歴を見るgit log –oneline –graph –all

【git checkout / git switch】ブランチの新規作成 & ブランチの移動

git branch 新しいブランチ名
git checkout 移動したいブランチ名

ブランチ開発の最初の一歩、まず新しいブランチを作成します。
ブランチを作成したら、現在のブランチ(通常は「main」または「master」)から作成したブランチに移動します。

慣れてきたら、上記コマンドを一つに纏めた以下のコマンドでもOKです。

git checkout -b new-feature

git checkout の代わりに git switch を使う

git switch はGit 2.23で導入された新しいコマンドで、ブランチの切り替えをより直感的かつ安全に行えるよう設計されています。

git switch 移動したいブランチ名

git checkout と同じで、ブランチを移動するときのコマンドです。

git switch -c new-branch

ブランチの作成と同時に、そのブランチに移動するコマンドです。

git checkout と git switch の違いは?

git checkout基本コマンド編にもある通り、「過去のコミットに遡る」などブランチの移動以外にも機能を有します。
一方 git switch は、ブランチの切り替え機能のみを有するコマンドです。

一見すると「多機能な git checkout が使えればいいのでは・・・」と思われますが、その多機能さゆえ、操作を誤ると取り返しのつかない事態も起こり得ます。安全性という側面から、ブランチの切り替えに関しては git switch の使用が推奨されています。

ファイルの変更を取り消す用途にも、git checkout の代わりに git restore が用意されています。こちらもGit 2.23で git switch と同時に導入されました。詳しくは基本コマンド編にて。

【git branch】ブランチの確認

git branch

現在作成済のブランチ一覧が表示されます。(ブランチを作成していないときは「main」または「master」という主ブランチのみが表示されます。)
また、今自分がどこのブランチで作業しているかも確認できます。現在いるブランチには * が付き、色が変わって表示されます。

git branch -a

ローカルのブランチに加えて、リモート追跡ブランチも含めた全てのブランチを一覧表示します。
ローカルのみを扱っているうちは git branch だけで足りますが、リモートリポジトリを使い始めると出番の多いオプションです。

【git merge】ブランチの更新内容を主ブランチに統合

ブランチで作業したら、git addgit commit で更新内容をコミットします。
(こちらのコマンドについては基本コマンド編にて)

git add .
git commit -m "コミットメッセージ"

ブランチでコミットした内容は、主ブランチの方には反映されません。
反映させるためには、以下のコマンドを実行して主ブランチに「マージ」します。

git switch main
git merge 統合したいブランチ名

マージ先のブランチ(この場合は「main」)に移動してからマージします。
git switch main の代わりに git checkout main でもOKです。)

git merge コマンドのオプション

git merge には様々なオプションが用意されています。
以下は、個人的によく使うものをピックアップしました。

オプション動作
–no-ffマージコミットを作成する。ファストフォワードマージが可能な場合でもマージコミットが作られ、マージが行われたことを常に履歴に残したいときに使う
–ffファストフォワードマージを許可する。オプションを付けない場合の既定の動作で、明示したいときに使う
–ff-onlyファストフォワードマージが可能な場合にのみマージを実行し、そうでない場合はマージを行わずにエラーを返す
–squashブランチの全コミットを1つにまとめて(スカッシュして)マージ先へ取り込む。履歴をシンプルに保てるが、個々のコミットは失われる
–abortマージ中に問題が発生した場合に、マージ操作を中止してマージ前の状態に戻す。コンフリクトが発生していったんキャンセルしたいときに使う
ファストフォワードマージとは?

ファストフォワードマージ(Fast-forward merge)は、履歴にマージコミットを作成せずにブランチを統合する方法です。
マージ対象のブランチが、主ブランチの直接の子孫である(=主ブランチで新しいコミットがなく、ブランチのコミットが新しく追加されるのみである)場合に適用できます。

ファストフォワードマージが適用されると、プロジェクトの履歴が直線的に保たれて分岐が発生していないかのようになり、読みやすくなります。
一方、特定のブランチでの作業を明確に示したい場合(例えば、特定の機能開発を行ったブランチを他の開発者と共有する場合など)、あえてマージコミットを明示的に作成する方が良い場合があります。(その場合に --no-ff オプションを使用します。)

コンフリクトとは?

異なるブランチをマージしようとしたとき、同じファイルの同じ部分が異なる方法で変更されていた場合に発生します。
Gitではこれらの競合を自動で解決することはできないため、手動で介入して解決する必要があります。

詳しくは コンフリクト の解説ページもあわせてご覧ください。

【git branch -d / -D】ブランチを削除

git branch -d 削除したいブランチ名

指定したブランチを削除するコマンド。
主ブランチにマージした後など、ブランチ開発が終了して不要になったときに使用します。
削除対象のブランチで作業している場合は削除できませんので、他のブランチに移動してから実行します。

ただし、まだマージされていないブランチを指定した場合は、警告が出て削除されません。
削除前にマージしたかどうかを確認できる、比較的安全なコマンドといえます。

git branch -D 削除したいブランチ名

指定したブランチを強制的に削除するコマンド。
マージされていないブランチを指定した場合でも、警告なしで強制削除します。

基本的には git branch -d を使い、これで削除できなかったけれど削除したい場合に -D を使うのが安全です。

【git log –oneline –graph –all】ブランチを含む全コミット履歴の確認

git log --oneline --graph --all

コミット履歴を視覚的 かつ コンパクトに表示するためのコマンド。(git log については基本コマンド編にて)
オプションに --graph--all を付けることにより、ブランチ間の関係を含めた履歴を確認できます。

オプション動作
–oneline各コミットを一行(ハッシュの先頭数文字 + コミットメッセージ)で表示する。表示がコンパクトになり、履歴が把握しやすくなる
–graphコミット履歴に、テキストベースでグラフィカルな表現を追加する。ブランチの分岐や統合が視覚的に表示され、リポジトリの構造が理解しやすくなる
–all全ブランチのコミット履歴を表示する。既定の git log は現在作業中のブランチの履歴のみを表示するが、このオプションで全ブランチの履歴を一覧できる

参考までに、以下のような出力が得られます。

*   abcdefg Merge branch 'feature'
|\
| * hijk123 Some feature work
* | lmno456 Another commit on main
|/
* qrst789 Initial commit

まとめ

ローカルにおけるブランチ開発でよく使うコマンドを紹介しました。
本記事で紹介したコマンドは、実際にプロジェクトフォルダを用意してVSコードエディタで実行してみた画像付きの記事もあります。より理解が深まると思いますので、本記事と合わせてご覧ください。

ローカル開発のGitコマンドに関する記事一覧

この記事に出てきた用語

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次