ブランチ
概念ブランチとは「作業の分岐点」です。本番コードを壊さずに新機能の開発やバグ修正を 別の流れで進め、完成したらメインに取り込めます。
ブランチのイメージ
概念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. エディタでコンフリクトマーカー(<<<<、=====、>>>>)を手動で削除し、正しい内容に直す
- 2.
git add ファイル名でステージング - 3.
git commitでコンフリクト解消をコミット
ブランチ名の命名規則
用語feature/ 用語 新機能の追加
feature/user-login fix/ 用語 バグの修正
fix/typo-in-header hotfix/ 用語 緊急の本番バグ修正
hotfix/payment-error refactor/ 用語 コードの整理・改善
refactor/auth-module