🎃

Git・ブランチコマンド

2025/01/25に公開

Gitのブランチ関係のコマンドを自分用にまとめる!


git branch

  • 現在のリポジトリに存在するすべてのブランチを表示する。
  • 現在作業中のブランチ(チェックアウト中のブランチ)にアスタリスク * が付いて表示される。

下記では、現在のブランチが main で、他に feature/loginfeature/signup というブランチが存在してることを示してる。

$ git branch
* main
  feature/login
  feature/signup

git branch ブランチ名

  • 新しいブランチを作成する。
  • 作成されるブランチは、現在チェックアウト中のブランチ(例: main)の最新のコミットを元に作成される。
  • ただし、この時点では新しいブランチに切り替わらないため、git checkout ブランチ名 の入力が必要。

下記は feature/test という名前の新しいブランチを作成している。

$ git branch feature/test

git checkout ブランチ名

  • 入力したブランチに切り替え(チェックアウト)。

下記は、現在の作業ブランチが feature/test に切り替わったことを示している。
作業ディレクトリが feature/test になり、以降の作業(コミットや変更)はこのブランチ上で行われる。

$ git checkout feature/test
Switched to branch 'feature/test'

git switch ブランチ名

git switch は、これだけで「ブランチ作成+切り替え」の2つの操作を1度にできる。

git switch -c feature/test

ブランチ作成した後の手順

空の状態でコミットする
ローカルでブランチを作成しても、それをリモートに反映するためには git push が必要となる。
しかし、リモートリポジトリに空のブランチだけを push することはできない(何もコミットがない場合、リモートに反映されない)。
そのため、 --allow-empty を使った空コミット を追加し、最低1つのコミットを持たせてリモートに push できるようにする。

git commit --allow-empty -m "first commit"

リモートリポジトリ(origin)にpushする

git push origin ブランチ名

リモートブランチを別パソコンに引き継ぐ方法

例えば、会社でブランチを作成し、途中まで開発を進め、それを家のパソコンで引き継いで、続きを開発する場合は、git pull を使用し、リモートからブランチを取得して作業を再開する。

以下にその流れを詳しく説明します。

1. リポジトリをクローンする(初回の場合)

まず、家のパソコンにリモートリポジトリをクローンする。

git clone https://github.com/<username>/<repository>.git

クローンを行うと、リモートリポジトリに存在するすべてのブランチ(main やその他のブランチ)と、そのブランチに含まれる履歴(コミット)はローカルにコピーされる。
ブランチで作成した機能がリモートリポジトリにプッシュされていれば、クローン先でもそのブランチが存在し、内容も引き継がれる。
ただし、デフォルトではリモートの デフォルトブランチ(通常は main のみがチェックアウトされる。


2. 他のリモートブランチを確認する

git branch -r コマンドで、リモートリポジトリ上のすべてのブランチを確認する。

git branch -r

例:

  origin/main
  origin/feature/search

3. 特定のブランチをローカルに作成して引き継ぐ

リモートブランチ(例:feature/search)をローカルに引き継ぐ場合、以下のコマンドを実行します:

リモートブランチをローカルでチェックアウト
リモートブランチをローカルに作成し、同時に切り替えます。

git checkout -b feature/search origin/feature/search

これでローカルに feature/search ブランチが作成され、リモートの feature/search ブランチが引き継がれます。


4. その後の開発を進める

ローカルで開発を続け、変更をコミットしてリモートにプッシュすることで、作業を引き継げます。

# ファイルを編集して変更をステージング
git add .
# コミット
git commit -m "Continue development on feature/search"
# リモートにプッシュ
git push origin feature/search

Discussion