LoginSignup
3
3

Gitを安心して使うために知っておきたいGitコマンドの動き git branch編

Last updated at Posted at 2024-03-06

はじめに

私がGitについて勉強し始めてすぐの頃、Gitのコマンドを間違えてしまい研修で作ったプログラムがすべて消えてしまったことがあります。それからGitを使うのがとても怖かったです。もしもGitコマンドの動きを正確に知っていればこのようなミスはしなかったと思います。
この記事ではGit初心者向けに、git branchコマンドに焦点を当てて実行されたときの動きをまとめています。

具体例と実行コマンド

自分で作成した既存のブランチを一覧表示する

git branch

本記事で出てくるコマンドの基本となるgit branchですが、こちらはリモート追跡ブランチ以外のローカルブランチを一覧表示します。
これだけではローカルブランチをすべて表示することはできません。

ローカルブランチ

自分のパソコンの中にあるブランチです。
「オフラインで操作可能なブランチ」のようなイメージであり、本来は下記のリモート追跡ブランチもローカルブランチに含まれます。
しかし、一般的にローカルブランチと呼ばれるものは上記コマンドgit branchで表示されるブランチのことを指します。

リモート追跡ブランチ

リモートブランチを参照しているローカルブランチです。
本来はローカルブランチの一つですが、本記事ではわかりやすくするためにグラフなどでローカルブランチとリモート追跡ブランチを分けて書いている場合があります。

リモートブランチ

ネットワーク上にあるブランチです。
「オンラインで操作可能なブランチ」のようなイメージです。

スライド1.PNG

すべてのローカルブランチを一覧表示する

git branch -a
git branch --all

こちらのコマンドがすべてのローカルブランチを表示することができます。リモート追跡ブランチも一緒に表示したい場合はこちらを使います。

よくある-aオプションの間違った説明

よく「ローカルブランチとリモートブランチを表示する」と説明されていることがありますが、これは誤りでリモートブランチは表示されません。 表示されるのはリモート追跡ブランチです。

例えば、別の人が新しくリモートブランチを作成したとします。もしリモートブランチを見られるのなら、git branch -aコマンドで表示できるはずです。
しかし実際には追加されたリモートブランチは表示されません。
表示されるリモート追跡ブランチを更新するには、git fetchgit pullを使用する必要があります。これによりリモートブランチとリモート追跡ブランチが同期され、その後git branch -aコマンドを実行することでリモートブランチと同期したリモート追跡ブランチが表示できるようになります。

スライド2.PNG

ブランチごとに最新のコミットIDとメッセージ、上流ブランチの名前を表示する

git branch --verbose --verbose
git branch -vv

verboseとは「詳細な」という意味があり、それが二つ繋がっているのでとても詳細な情報を表示してくれます。
具体的には下記の5つですが、基本的には3番を知るために使うことが多いです。

  1. コミットIDの最初の7文字
  2. 最新のコミットのコミットメッセージ
  3. 上流ブランチ名
  4. 上流ブランチにプッシュしていないコミットの数
  5. 上流ブランチからプルしていないコミットの数

上流ブランチという単語は聞きなれない方もいると思いますが、Gitコマンドの動きを知るうえではとても重要だと思います。

上流ブランチ

ローカルブランチの追跡先として設定しているブランチのことです。
基本的にリモートブランチを上流ブランチとして設定します。
git pushgit fetchgit pullなどのコマンドを省略して使用したい場合は意識することになります。

追跡ブランチ

特定のブランチを追跡しているブランチのことです。

リモート追跡ブランチから作成されたブランチは同期しているリモートブランチを上流ブランチとして設定しています。

スライド3.PNG

ローカルブランチを削除する

git branch -d [ローカルブランチ名]

ローカルブランチを削除できます。
しかし削除したいブランチが上流ブランチを設定している場合、変更履歴が失われないための措置としてマージ済みかどうかをチェックしています。そのため、マージされていない場合は警告を出すため削除することができません。

例として下記のグラフのような状況があるとします。

スライド4.PNG

ローカルブランチのfeature/01を削除するには下記の2つを満たさなければいけません。

  1. feature/01がmasterにマージされている
  2. git fetchgit pullでリモート追跡ブランチの情報を更新している

スライド5.PNG

強制的にローカルブランチを削除する

git branch -D [ローカルブランチ名]

git branch -dで警告が出るけど必要ないブランチを削除したいときはこちらのコマンドで削除することができます。
強制的に削除できてしまうので本当に必要ないブランチなのか把握したうえで使うようにすべきだと思います。

おわりに

この記事には書いていない便利なコマンドはほかにもありますが、特にgit branchについて紹介しました。
Gitについて調べるといろいろな情報が出てきてどれが正しいのかわからなくなる時があるので公式ドキュメントを確認するのはとても大切だと考えています。ぜひご自身でドキュメントを読んで理解していただきたいと思います。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3