📝 Gitブランチ入門
Gitを使い始めたばかりの頃は、すべての変更を**main**(またはmaster)ブランチで行いがちです。しかし、この方法は危険です。
なぜなら、もし新しい機能(例えば、HTMLの表を追加する作業)を開発中にバグが発生したら、公開中のサイトも壊れてしまうかもしれないからです。
そこで登場するのが「ブランチ(Branch)」です。ブランチは、開発の**「流れ」を一時的に分岐させる**機能です。
1. なぜブランチを使うの? 🌳
ブランチは、例えるなら木の幹(mainブランチ)から伸びる枝のようなものです。
安全に開発: 開発中の新しい機能やバグ修正を、
mainブランチに影響を与えることなく、独立したブランチで進められます。並行作業: 複数の開発者がそれぞれ別のブランチで同時に作業できます。
履歴の整理: コミット履歴が整理され、後から見返しても分かりやすくなります。
【ブランチの基本コマンド】
| コマンド | 目的 |
git status | 現在のブランチ名と、作業の状態を確認します。 |
git branch | 存在するすべてのブランチの一覧を表示します。 |
git checkout -b <ブランチ名> | 新しいブランチを作成し、同時にそのブランチへ移動します。 |
git checkout <ブランチ名> | 既に存在するブランチへ移動します。 |
git merge <ブランチ名> | 指定したブランチの変更を、現在のブランチに統合(マージ)します。 |
2. 開発したブランチをまとめる:マージ 🤝
新しい機能が完成したら、その「枝」を「幹」に戻す必要があります。この作業を「マージ(Merge)」といいます。
【マージの手順】
mainブランチに移動する: マージ先のブランチ(通常はmain)に移動します。git checkout main
マージを実行する:
git mergeコマンドで、完成したブランチをmainブランチに取り込みます。git merge <マージするブランチ名>
【マージ後のブランチ削除】
マージが完了したブランチは、mainブランチに取り込まれたので、もう不要です。以下のコマンドで削除できます。
# 安全な削除(マージ済みのみ)
git branch -d <ブランチ名>
# 強制削除(マージ前でも強制的に削除)
git branch -D <ブランチ名>
3. マージの衝突(コンフリクト)を解決しよう 💥
複数の開発者が同じファイルの同じ行を同時に変更した場合、Gitはどちらの変更を優先すべきか判断できなくなり、「コンフリクト(Conflict)」が発生します。
【コンフリクトが発生したら?】
慌てない!: Gitは、コンフリクトしているファイルを分かりやすく教えてくれます。
git statusで状態を確認する:Unmerged pathsという表示が出ているはずです。エディタでファイルを編集する: コンフリクトしているファイルを開くと、以下のような特殊な記号が表示されています。
<<<<<<< HEAD
<p>現在のブランチのコード</p>
=======
<p>マージするブランチのコード</p>
>>>>>>> bugfix/table-3
HEADから=======までの間: 現在のブランチのコード。=======から>>>>>>>までの間: マージしようとしているブランチのコード。
どちらを残すか、または両方の良い部分を組み合わせるか、自分でコードを編集して解決します。
解決したファイルをステージングする:
git add コンフリクトしたファイル名
マージを完了させる:
git commit
コンフリクトは避けられないものですが、git statusをこまめに確認し、変更内容をよく理解して落ち着いて対処すれば、必ず解決できます。
4. マージの進化系:リベース(Rebase) 🔄
リベースは、自分のブランチの変更を、mainブランチの最新の状態に**「積み直す」**作業です。
目的: 複雑なマージコミットを避け、コミット履歴をきれいに保つことができます。
方法: 自分の作業ブランチで、
git rebase mainを実行します。
リベースは、マージよりも高度な作業であり、履歴を書き換えるため、チームで共有しているブランチには行わないのが鉄則です。
