Gitブランチ入門

 


📝 Gitブランチ入門

Gitを使い始めたばかりの頃は、すべての変更を**main**(またはmaster)ブランチで行いがちです。しかし、この方法は危険です。

なぜなら、もし新しい機能(例えば、HTMLの表を追加する作業)を開発中にバグが発生したら、公開中のサイトも壊れてしまうかもしれないからです。

そこで登場するのが「ブランチ(Branch)」です。ブランチは、開発の**「流れ」を一時的に分岐させる**機能です。


1. なぜブランチを使うの? 🌳

ブランチは、例えるなら木の幹(mainブランチ)から伸びる枝のようなものです。

  • 安全に開発: 開発中の新しい機能やバグ修正を、mainブランチに影響を与えることなく、独立したブランチで進められます。

  • 並行作業: 複数の開発者がそれぞれ別のブランチで同時に作業できます。

  • 履歴の整理: コミット履歴が整理され、後から見返しても分かりやすくなります。

【ブランチの基本コマンド】 

コマンド目的
git status現在のブランチ名と、作業の状態を確認します。
git branch存在するすべてのブランチの一覧を表示します。
git checkout -b <ブランチ名>新しいブランチを作成し、同時にそのブランチへ移動します。
git checkout <ブランチ名>既に存在するブランチへ移動します。
git merge <ブランチ名>指定したブランチの変更を、現在のブランチに統合(マージ)します。

2. 開発したブランチをまとめる:マージ 🤝

新しい機能が完成したら、その「枝」を「幹」に戻す必要があります。この作業を「マージ(Merge)」といいます。

【マージの手順】

  1. mainブランチに移動する: マージ先のブランチ(通常はmain)に移動します。

    • git checkout main

  2. マージを実行する: git mergeコマンドで、完成したブランチをmainブランチに取り込みます。

    • git merge <マージするブランチ名>

【マージ後のブランチ削除】 マージが完了したブランチは、mainブランチに取り込まれたので、もう不要です。以下のコマンドで削除できます。

# 安全な削除(マージ済みのみ)
git branch -d <ブランチ名>

# 強制削除(マージ前でも強制的に削除)
git branch -D <ブランチ名>

3. マージの衝突(コンフリクト)を解決しよう 💥

複数の開発者が同じファイルの同じ行を同時に変更した場合、Gitはどちらの変更を優先すべきか判断できなくなり、「コンフリクト(Conflict)」が発生します。

【コンフリクトが発生したら?】

  1. 慌てない!: Gitは、コンフリクトしているファイルを分かりやすく教えてくれます。

  2. git statusで状態を確認する: Unmerged pathsという表示が出ているはずです。

  3. エディタでファイルを編集する: コンフリクトしているファイルを開くと、以下のような特殊な記号が表示されています。

<<<<<<< HEAD
    <p>現在のブランチのコード</p>
=======
    <p>マージするブランチのコード</p>
>>>>>>> bugfix/table-3
  • HEADから=======までの間: 現在のブランチのコード。

  • =======から>>>>>>>までの間: マージしようとしているブランチのコード。

どちらを残すか、または両方の良い部分を組み合わせるか、自分でコードを編集して解決します

  1. 解決したファイルをステージングする:

    • git add コンフリクトしたファイル名

  2. マージを完了させる:

    • git commit

コンフリクトは避けられないものですが、git statusをこまめに確認し、変更内容をよく理解して落ち着いて対処すれば、必ず解決できます


4. マージの進化系:リベース(Rebase) 🔄

リベースは、自分のブランチの変更を、mainブランチの最新の状態に**「積み直す」**作業です。

  • 目的: 複雑なマージコミットを避け、コミット履歴をきれいに保つことができます。

  • 方法: 自分の作業ブランチで、git rebase mainを実行します。

リベースは、マージよりも高度な作業であり、履歴を書き換えるため、チームで共有しているブランチには行わないのが鉄則です。