ブランチは、プロジェクトの開発を並行して進めるための仕組みです。メインの開発ラインから分岐して、独立した作業を行うことができます。
- 新機能の開発を安全に行える
- 複数人が同時に異なる機能を開発できる
- 実験的な変更を本番コードから分離できる
- バグ修正と新機能開発を並行して進められる
例題1:現在のブランチを確認
git branch例題2:リモートブランチも含めてすべてのブランチを表示
git branch -a例題3:各ブランチの最新コミットも表示
git branch -v例題4:新しいブランチを作成
git branch feature-login
git branch例題5:ブランチを作成して同時に切り替え
git checkout -b feature-header例題6:新しい方法でブランチを作成して切り替え(Git 2.23以降)
git switch -c feature-footer例題7:既存のブランチに切り替え
git checkout main
git checkout feature-login例題8:新しい方法でブランチを切り替え(Git 2.23以降)
git switch main
git switch feature-header例題9:ログイン機能のブランチで作業
# mainブランチから始める
git checkout main
# ログイン機能用のブランチを作成して切り替え
git checkout -b feature-login
# ログインページを作成
echo "<form>ログインフォーム</form>" > login.html
git add login.html
git commit -m "ログインページを追加"
# ログイン処理を追加
echo "function login() { /* ログイン処理 */ }" > login.js
git add login.js
git commit -m "ログイン処理を実装"
# 作業内容を確認
git log --oneline -3例題10:単純なマージ(Fast-forward)
# mainブランチに切り替え
git checkout main
# feature-loginブランチをマージ
git merge feature-login
# マージ結果を確認
git log --oneline --graph -5例題11:並行開発後のマージ
# mainブランチで作業
git checkout main
echo "メインページの更新" >> index.html
git add index.html
git commit -m "メインページを更新"
# 新機能ブランチを作成
git checkout -b feature-sidebar
echo "<aside>サイドバー</aside>" > sidebar.html
git add sidebar.html
git commit -m "サイドバーを追加"
# mainブランチに戻ってマージ
git checkout main
git merge feature-sidebar
# マージコミットが作成されたことを確認
git log --oneline --graph -5例題12:意図的にコンフリクトを発生させる
# 準備:共通のファイルを作成
git checkout main
echo "共通のコンテンツ" > shared.txt
git add shared.txt
git commit -m "共通ファイルを追加"
# ブランチAで編集
git checkout -b branch-a
echo "ブランチAの変更" > shared.txt
git add shared.txt
git commit -m "ブランチAで変更"
# mainブランチに戻って別の編集
git checkout main
echo "mainブランチの変更" > shared.txt
git add shared.txt
git commit -m "mainブランチで変更"
# マージを試みる(コンフリクトが発生)
git merge branch-a例題13:コンフリクトを手動で解決
# コンフリクトの状態を確認
git status
# ファイルの内容を確認
cat shared.txt
# エディタでファイルを開いて修正
# <<<<<<< HEAD
# mainブランチの変更
# =======
# ブランチAの変更
# >>>>>>> branch-a
# 修正後の内容(例)
echo "mainブランチとブランチAの変更を統合" > shared.txt
# 解決したファイルをステージング
git add shared.txt
# マージを完了
git commit -m "コンフリクトを解決してマージ"例題14:マージ済みのブランチを削除
git branch -d feature-login例題15:マージされていないブランチを強制削除
git branch -D experimental-feature例題16:ブランチ名を変更
# 現在のブランチの名前を変更
git branch -m new-branch-name
# 別のブランチの名前を変更
git branch -m old-name new-name例題17:ブランチ間の差分を確認
git diff main..feature-header例題18:ブランチ間のコミットの違いを確認
git log main..feature-header例題19:特定のコミットを別のブランチに適用
# コミットIDを確認
git log --oneline feature-sidebar
# 特定のコミットをmainブランチに適用
git checkout main
git cherry-pick abc1234 # abc1234は実際のコミットIDに置き換え新しいリポジトリを作成し、mainブランチにREADME.mdファイルを追加してコミットしてください。その後、developブランチを作成して切り替えてください。
developブランチで以下の作業を行ってください:
app.jsファイルを作成(内容:console.log("アプリ開始");)config.jsファイルを作成(内容:const config = {};)- それぞれ別々にコミット
mainブランチに戻り、developブランチの変更をマージしてください。マージ後、ブランチの履歴をグラフ形式で確認してください。
以下の手順でコンフリクトを発生させ、解決してください:
mainブランチでversion.txtを作成(内容:v1.0.0)hotfixブランチを作成し、version.txtをv1.0.1に変更mainブランチに戻り、version.txtをv2.0.0に変更hotfixブランチをマージし、コンフリクトを解決
不要になったブランチ(developとhotfix)を削除してください。
# 新しいリポジトリを作成
mkdir branch-practice
cd branch-practice
git init
# README.mdを作成してコミット
echo "# ブランチ練習用リポジトリ" > README.md
git add README.md
git commit -m "README.mdを追加"
# developブランチを作成して切り替え
git checkout -b develop# app.jsを作成してコミット
echo 'console.log("アプリ開始");' > app.js
git add app.js
git commit -m "app.jsを追加"
# config.jsを作成してコミット
echo "const config = {};" > config.js
git add config.js
git commit -m "config.jsを追加"# mainブランチに戻る
git checkout main
# developブランチをマージ
git merge develop
# 履歴をグラフ形式で確認
git log --oneline --graph --all# mainブランチでversion.txtを作成
echo "v1.0.0" > version.txt
git add version.txt
git commit -m "バージョン1.0.0をリリース"
# hotfixブランチを作成して変更
git checkout -b hotfix
echo "v1.0.1" > version.txt
git add version.txt
git commit -m "緊急修正: バージョン1.0.1"
# mainブランチで別の変更
git checkout main
echo "v2.0.0" > version.txt
git add version.txt
git commit -m "メジャーアップデート: バージョン2.0.0"
# マージ(コンフリクト発生)
git merge hotfix
# コンフリクトを解決
echo "v2.0.1" > version.txt # 両方の変更を考慮
git add version.txt
git commit -m "コンフリクトを解決: バージョン2.0.1"# マージ済みのブランチを削除
git branch -d develop
git branch -d hotfix
# ブランチの一覧を確認
git branchこの章では、Gitの強力な機能であるブランチについて学習しました。ブランチを使うことで、安全に新機能の開発や実験を行うことができます。また、コンフリクトの解決方法も理解しました。
次の章では、リモートリポジトリを使った協働作業について学習します。
第4章:リモートリポジトリとコラボレーションに進みましょう!