Git ブランチとマージ — 共同作業の基本
このトピックを終えると
ブランチがなぜ必要か、どのように作成およびマージするか、そしてどのように競合を解決するかを理解できるようになります。
ブランチがない場合
チームメンバー3人が同じコードを同時に修正します。Aがログインを作成し、Bが決済を作成し、Cがバグを修正します。コードをマージするたびに競合が発生し、誰が何を修正したかを追跡するのが難しくなります。
ブランチは、コードの独立した作業スペースです。それぞれがブランチで作業し、完了したらマージします。
ブランチの作成と切り替え
# ブランチリストの確認git branch
# 新しいブランチの作成git branch feature/login
# ブランチの切り替えgit checkout feature/login
# 作成と同時に切り替え(一度に)git checkout -b feature/loginmain(またはmaster)はデフォルトのブランチです。新しい機能を作成するときはブランチを作成し、完了したらmainにマージします。
作業とコミット
# feature/loginブランチで作業git add login.jsgit commit -m "feat: add login form"
git add auth.jsgit commit -m "feat: add authentication logic"これらのコミットはfeature/loginブランチにのみ存在します。mainブランチには影響しません。
マージ:結合
# mainに戻るgit checkout main
# feature/loginをmainにマージgit merge feature/loginfeature/loginのコミットがmainにマージされます。競合がない場合は自動的に完了します。
競合の解決
同じファイルの同じ部分を2つのブランチで修正した場合、競合が発生します。
<<<<<<< HEAD
const greeting = "Hello";
=======
const greeting = "Hi";
>>>>>>> feature/login<<<<<<<と>>>>>>>の間の内容を確認し、必要なコードのみを残します。
const greeting = "Hi";修正後、コミットします。
git add greeting.jsgit commit -m "fix: resolve merge conflict"プルリクエスト(PR)
実務では、git mergeをローカルで直接行いません。プルリクエストを通じてマージします。
- ブランチで作業し、プッシュする
- GitHub/GitLabでPRを作成する
- チームメンバーがコードレビューを行う
- 承認されるとマージ
PRは、「このコードをmainにマージしてもよろしいでしょうか?」とリクエストすることです。コードレビューが行われるため、バグが減少し、チームメンバーがコードの変更を把握できます。
ブランチ名の規則
feature/login — 新しい機能
fix/cart-bug — バグ修正
refactor/auth — リファクタリング
docs/readme-update — ドキュメント種類/説明の形式が一般的です。チームによって規則が異なるため、プロジェクトの規則に従ってください。
重要なポイント
ブランチはコードの独立した作業スペースであり、完了したらマージで結合します。 同じ部分を修正すると競合が発生し、手動で解決する必要があります。 実務ではプルリクエストを通じてコードレビューを行った後、マージします。