なぜ個人開発でもGitが必要なのか
「一人でしか開発しないからGitは不要」という声を聞くことがありますが、これは大きな誤解です。Gitはチーム開発のためのツールではなく、時間軸を管理するためのツールです。
- 3日前まで動いていた機能が突然壊れた → どこで壊れたか追跡できる
- 新機能を追加中に別のバグ修正が必要になった → ブランチで並行作業できる
- リリース後に問題が発覚した → 1コマンドで前バージョンに戻せる
本記事では個人開発者が実践すべきGitのブランチ戦略とコミット習慣を解説します。
おすすめのブランチ構成
個人開発で現実的なのは以下の3〜4ブランチ構成です。
main ← 本番リリース済みの安定版
develop ← 開発の統合ブランチ
feature/xxx ← 機能追加(develop から分岐)
fix/xxx ← バグ修正(develop または main から分岐)
ブランチ操作の基本
# developからfeatureブランチを作成
git checkout develop
git checkout -b feature/add-contact-form
# 作業後、developにマージ
git checkout develop
git merge --no-ff feature/add-contact-form
git branch -d feature/add-contact-form
--no-ff オプションを使うことで、マージコミットが作られ、ブランチの存在がログに残ります。後から「この機能はいつ追加されたか」を把握しやすくなります。
コミットメッセージの書き方
コミットメッセージは未来の自分へのメモです。update や fix だけのメッセージは1週間後には意味を失います。
Conventional Commits 形式
<type>(<scope>): <description>
[optional body]
| type | 意味 |
|---|---|
| feat | 新機能追加 |
| fix | バグ修正 |
| docs | ドキュメント更新 |
| refactor | リファクタリング(機能変更なし) |
| test | テスト追加・修正 |
| chore | ビルド・CI設定変更 |
実例
git commit -m "feat(contact): お問い合わせフォームのバリデーション追加
- 名前・メール・本文の必須チェック
- メールアドレス形式チェック
- 本文の最大文字数制限(1000文字)を追加"
.gitignoreを最初に設定する
プロジェクト開始時に必ず .gitignore を設定してください。
# Laravelの場合
.env
/vendor
/node_modules
/public/hot
/public/storage
/storage/*.key
.phpunit.result.cache
よく使うGitコマンド集
# 変更の状態確認
git status
git diff
# ステージングと取り消し
git add -p # 変更を対話的にステージング(推奨)
git restore --staged <file> # ステージング取り消し
# ログ確認
git log --oneline --graph --all
# 特定ファイルの変更履歴
git log --follow -p app/Models/User.php
# 直前のコミットを修正(まだpushしていない場合のみ)
git commit --amend
# 作業を一時退避
git stash
git stash pop
# 特定のコミットに戻る(ブランチを変えずに確認)
git checkout <commit-hash> -- path/to/file
git bisect——バグの混入コミットを二分探索で特定
「いつからこのバグが発生したかわからない」という場面で git bisect を使うと、二分探索でバグを混入させたコミットを自動的に特定できます。
git bisect start
git bisect bad # 現在のコミットはバグあり
git bisect good v1.0.0 # このタグ時点ではバグなし
# Gitが中間のコミットをcheckoutする
# テストして良い・悪いを報告
git bisect good # このコミットはOK
git bisect bad # このコミットはNG
# 絞り込まれたらリセット
git bisect reset
タグで重要なポイントを記録する
# アノテーションタグを作成
git tag -a v1.0.0 -m "初回リリース"
# タグをプッシュ
git push origin v1.0.0
git push origin --tags # 全タグをプッシュ
リモートリポジトリとCIの連携
GitHubにプッシュすることで、GitHub Actionsを使った自動テスト・自動デプロイが可能です。
# .github/workflows/test.yml
name: Test
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
- run: composer install --no-progress --prefer-dist
- run: cp .env.testing .env
- run: php artisan key:generate
- run: php artisan test --parallel
まとめ
Gitの習慣を身につけることで、個人開発でも「なぜこのコードを書いたか」「いつ何を変更したか」を追跡でき、品質と安心感が格段に上がります。弊社では全プロジェクトでGitを使い、GitHub ActionsによるCI/CDと合わせてコードの品質管理を徹底しています。
開発プロジェクトのご相談はお気軽にお問い合わせください。