はじめに
元学習塾教材開発から転職した新人プログラマーです。
AIを使って家計簿Webアプリを作りながら、実際の開発でGitを使い続けてきました。教科書的な説明ではなく「実際にやってみてわかったこと」をまとめます。
【開発したアプリ】https://kakeibo-khaki.vercel.app/
使ったGitの操作一覧
基本操作
# ブランチを確認する
git branch -avv
# ブランチを作る(developから切る)
git checkout develop
git pull origin develop
git checkout -b feature/dark-mode
# 変更をコミットする
git add .
git commit -m "ダークモード対応を追加"
# リモートにプッシュする
git push origin feature/dark-mode
マージの流れ
# featureをdevelopにマージ
git checkout develop
git merge feature/dark-mode
git push origin develop
# developをmainにマージ
git checkout main
git merge develop
git push origin main
ブランチを削除する
# ローカルのブランチを削除
git branch -d feature/dark-mode
# マージ済みでも強制削除したい場合
git branch -D feature/dark-mode
# GitHubのブランチも削除
git push origin --delete feature/dark-mode
実際にやってみてわかったこと
① ブランチは機能ごとに切る
最初はmainに直接コミットしていました。でも機能が増えるにつれて「どの変更がどの機能のものか」がわからなくなりました。
# 悪い例
main ← 全部ここにコミット
# 良い例
feature/month-switch ← 月別切り替え
feature/pie-chart ← 円グラフ
feature/budget-setting ← 予算設定
機能ごとにブランチを切ることで、問題が起きたときに原因を特定しやすくなります。
② developブランチを挟む
最初はfeature → mainの直接マージをしていました。チーム開発を想定してdevelopブランチを挟む運用に変えました。
feature/xxx → develop(動作確認)→ main(リリース)
個人開発では必須ではないですが、将来チーム開発に入ったときの練習になります。
③ -dと-Dの違いで詰まった
# -d(小文字):マージ済みのみ削除
git branch -d feature/xxx
# -D(大文字):強制削除
git branch -D feature/xxx
-dでエラーが出たとき最初は焦りましたが、「まだマージしていないブランチを消そうとしている」というサインだとわかりました。
④ git branch -avvで状態を確認する習慣
git branch -avv
このコマンドを打つと全ブランチの状態が一覧で見えます。aheadやbehindの表示で「リモートと差分があるか」がわかるので、作業前後に必ず確認するようにしました。
⑤ Fast-forwardマージはコンフリクトなし
Updating 878f9a4..d3ac5fd
Fast-forward
このメッセージが出たときはコンフリクトなしで安全にマージできた証拠です。最初は意味がわからなかったのですが、「ブランチが一直線につながったのでそのまま取り込めた」という意味だとわかりました。
今の運用フロー
1. developからfeatureブランチを切る
git checkout develop
git checkout -b feature/xxx
2. 開発・コミット・プッシュ
git add .
git commit -m "〇〇を追加"
git push origin feature/xxx
3. developにマージ
git checkout develop
git merge feature/xxx
git push origin develop
4. 動作確認後にmainにマージ
git checkout main
git merge develop
git push origin main
5. featureブランチを削除
git branch -d feature/xxx
git push origin --delete feature/xxx
まとめ
| 学んだこと | ポイント |
|---|---|
| ブランチは機能ごとに切る | 変更の追跡がしやすくなる |
| developを挟む | チーム開発の練習になる |
-dと-Dの違い |
マージ済みかどうかで使い分ける |
branch -avvで確認 |
作業前後に状態を把握する |
| Fast-forwardを理解する | 安全なマージの証拠 |
実際のプロジェクトで使いながら覚えるのが一番身につきました。
★開発したアプリ
【シンプル家計簿】https://kakeibo-khaki.vercel.app/