Git

ブランチ

概念

ブランチとは「作業の分岐点」です。本番コードを壊さずに新機能の開発やバグ修正を 別の流れで進め、完成したらメインに取り込めます。

ブランチのイメージ

概念
gitGraph
   commit id: "初期コミット"
   commit id: "README 追加"
   branch feature/login
   checkout feature/login
   commit id: "ログイン画面を作成"
   commit id: "バリデーション追加"
   checkout main
   commit id: "バグ修正"
   merge feature/login id: "マージ"
   commit id: "次の開発へ"

ブランチの基本操作

ブランチを作成する

コマンド
ターミナル
# ブランチを作成して切り替え(これが一番よく使う) $ git switch -c feature/login Switched to a new branch 'feature/login' # 現在のブランチを確認 $ git branch  main * feature/login ← * が現在のブランチ
古いコードとの対応: ネット上の記事では git checkout -b ブランチ名(作成+切り替え)や git checkout ブランチ名(切り替えのみ)という書き方も見かけます。 Git 2.23 以降で追加された git switch の方が意図が明確なため、現在はこちらが推奨されています。

ブランチを切り替える

コマンド
ターミナル
# main ブランチに切り替え $ git switch main Switched to branch 'main' # feature/login に切り替え $ git switch feature/login Switched to branch 'feature/login'

ブランチをマージする

コマンド

feature ブランチの作業が完了したら、main にマージ(合流)します。

ターミナル
# まず main に切り替える $ git switch main # feature/login を main にマージ $ git merge feature/login Updating a1b2c3d..e4f5g6h Fast-forward  login.html | 30 +++++++++ # マージ後、不要になったブランチを削除 $ git branch -d feature/login Deleted branch feature/login

コンフリクト(競合)が起きたら

用語

同じファイルの同じ箇所を別々のブランチで編集するとコンフリクトが発生します。 Git が自動で解決できないため、手動で解消する必要があります。

コンフリクトが発生したファイルの中身
こんにちは
<<<<<<< HEAD
main ブランチの変更内容
=======
feature ブランチの変更内容
>>>>>>> feature/login
さようなら

解消手順

  1. 1. エディタでコンフリクトマーカー(<<<<、=====、>>>>)を手動で削除し、正しい内容に直す
  2. 2. git add ファイル名 でステージング
  3. 3. git commit でコンフリクト解消をコミット

ブランチ名の命名規則

用語
feature/ 用語

新機能の追加

feature/user-login
fix/ 用語

バグの修正

fix/typo-in-header
hotfix/ 用語

緊急の本番バグ修正

hotfix/payment-error
refactor/ 用語

コードの整理・改善

refactor/auth-module