困りごと:新機能の実験が怖い
😰 こんな心配ありませんか?
- 「新機能を試したいけど、今動いているコードを壊したくない」
- 「実験的な変更が本番に影響しそうで怖い」
- 「複数の機能を並行開発したいけど、混ざってしまう」
- 「失敗したら元に戻すのが大変そう」
解決策:ブランチを使って安全に実験!
ブランチとは?
イメージ:平行世界での開発
main(本番)━━━━━━━━━━━━━━━━━━━━━━━>
╲
╲ feature/new-ui(実験)
╲━━━━━━━━━━━━━━━>
↓
成功したら
↓
main ━━━━━━━━━━━━━━━━━━━━━━━━━━━>
↑ マージ(統合)
- ブランチ = 独立した作業スペース
- 本番(main)に影響を与えずに実験可能
- 成功したら統合、失敗したら捨てるだけ
実践:初めてのブランチ作成
1. プロジェクトの準備
# 新しいプロジェクトを作成
mkdir branch-practice
cd branch-practice
git init
# 基本的なファイルを作成
echo "# ブランチ練習プロジェクト" > README.md
echo "function calculate() {
return 10 + 20;
}" > calculator.js
git add .
git commit -m "初期実装:基本的な計算機能"
2. 現在のブランチを確認
# ブランチ一覧を表示
git branch
# より詳細な情報
git branch -v
*
マークが現在のブランチを示します。
3. 新しいブランチを作成
# 新機能用のブランチを作成
git branch feature/multiply
# ブランチ一覧を確認
git branch
まだmain
ブランチにいることに注目!
4. ブランチを切り替える
# feature/multiplyブランチに切り替え
git checkout feature/multiply
# または、作成と切り替えを同時に行う
# git checkout -b feature/multiply
# 現在のブランチを確認
git branch
ブランチでの作業
新機能を実装
# 掛け算機能を追加
echo "
function multiply(a, b) {
return a * b;
}" >> calculator.js
# 変更を確認
cat calculator.js
# コミット
git add calculator.js
git commit -m "feat: 掛け算機能を追加"
mainブランチは変更されていない!
# mainブランチに切り替え
git checkout main
# ファイルを確認(掛け算機能はない)
cat calculator.js
# feature/multiplyに戻る
git checkout feature/multiply
# ファイルを確認(掛け算機能がある)
cat calculator.js
ブランチのマージ(統合)
機能が完成したらmainに統合
# mainブランチに切り替え
git checkout main
# feature/multiplyをマージ
git merge feature/multiply
# 確認
cat calculator.js
git log --oneline -5
マージ後のクリーンアップ
# 不要になったブランチを削除
git branch -d feature/multiply
# 確認
git branch
よく使うブランチ操作
ブランチの一覧表示
# ローカルブランチ
git branch
# リモートブランチも含む
git branch -a
# 最終コミット情報付き
git branch -v
# マージ済みブランチのみ
git branch --merged
ブランチの作成パターン
# パターン1:作成してから切り替え
git branch feature/new-feature
git checkout feature/new-feature
# パターン2:作成と同時に切り替え(推奨)
git checkout -b feature/another-feature
# パターン3:特定のコミットから分岐
git checkout -b bugfix/issue-123 abc1234
ブランチの削除
# マージ済みブランチの削除
git branch -d branch-name
# 強制削除(マージしていなくても削除)
git branch -D branch-name
# リモートブランチの削除
git push origin --delete branch-name
ブランチ命名規則
良い名前の付け方
機能追加:
- feature/user-login
- feature/dark-mode
- feature/payment-integration
バグ修正:
- bugfix/login-error
- fix/memory-leak
- hotfix/critical-security
改善:
- improve/performance
- refactor/database-queries
- chore/update-dependencies
避けるべき名前
❌ test
❌ temp
❌ あああ
❌ branch1
❌ new-branch
実践的なブランチ戦略
個人開発の場合
# mainブランチ:常に動作する状態
# feature/*:新機能開発
# bugfix/*:バグ修正
# 例:ブログ機能を追加
git checkout -b feature/blog
echo "// Blog functionality" > blog.js
git add blog.js
git commit -m "feat: ブログ機能を追加"
# テストしてOKならマージ
git checkout main
git merge feature/blog
実験的な変更
# 実験用ブランチ
git checkout -b experiment/new-algorithm
# 色々試す
echo "// 実験的なコード" > experiment.js
git add experiment.js
git commit -m "実験:新しいアルゴリズムを試す"
# うまくいかなかったら、ブランチごと削除
git checkout main
git branch -D experiment/new-algorithm
トラブルシューティング
エラー:ブランチの切り替えができない
error: Your local changes would be overwritten
解決策:
# 変更を一時保存
git stash
# ブランチを切り替え
git checkout other-branch
# 変更を復元
git stash pop
エラー:ブランチの削除ができない
error: The branch 'feature' is not fully merged
解決策:
# マージされているか確認
git branch --merged
# 強制削除(注意!)
git branch -D feature
ベストプラクティス
1. こまめにmainを更新
# feature ブランチで作業中
git checkout main
git pull origin main
git checkout feature/my-feature
git merge main # mainの最新を取り込む
2. 一つのブランチ = 一つの目的
良い例:
- feature/user-authentication(認証機能のみ)
- bugfix/login-timeout(特定のバグのみ)
悪い例:
- feature/everything(色々な変更)
- temp-work(何をしているか不明)
3. 定期的なクリーンアップ
# マージ済みブランチを確認
git branch --merged
# 不要なブランチを削除
git branch -d old-feature-1 old-feature-2
まとめ
ブランチの基本操作をマスターしました!
- ✅ 本番を壊さずに新機能を開発できる
- ✅ 複数の作業を並行して進められる
- ✅ 失敗しても簡単に捨てられる
- ✅ 実験的な変更も安心して試せる
重要なコマンド:
git branch
- ブランチ一覧git checkout -b
- ブランチ作成&切り替えgit merge
- ブランチの統合git branch -d
- ブランチの削除
次のレッスンでは、これまで学んだことを活かして、実際の個人プロジェクトを管理する方法を実践します!
【実践演習】ブランチの操作
実際にプロジェクトを作成して、ブランチ操作を練習しましょう。
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$
█
ファイルツリー
/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
練習課題
-
新機能ブランチの作成
# ダークモード機能のブランチを作成 git checkout -b feature/dark-mode # ダークモードのスタイルを追加 echo "body.dark { background: #333; color: white; }" >> style.css git add style.css git commit -m "feat: ダークモードのスタイルを追加"
-
バグ修正ブランチの作成
# mainに戻ってからバグ修正ブランチを作成 git checkout main git checkout -b bugfix/version-number # バージョン番号を修正 sed -i '' "s/1.0.0/1.0.1/g" app.js # Macの場合 # sed -i "s/1.0.0/1.0.1/g" app.js # Linuxの場合 git add app.js git commit -m "fix: バージョン番号を修正"
-
マージ操作
# mainブランチに戻る git checkout main # バグ修正をマージ git merge bugfix/version-number # 新機能をマージ git merge feature/dark-mode # マージ結果を確認 cat app.js style.css
-
ブランチのクリーンアップ
# マージ済みブランチを確認 git branch --merged # 不要なブランチを削除 git branch -d bugfix/version-number git branch -d feature/dark-mode # 結果を確認 git branch
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$
█
ファイルツリー
/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
🎯 確認ポイント
- ブランチを作成して安全に実験できた
- ブランチを切り替えて独立した作業ができた
- マージで変更を統合できた
- 不要なブランチを削除して整理できた
ブランチを使いこなせば、どんな実験も怖くありません!