はじめに
Git を学び始めたけれど、「add と commit はわかるけど、それ以外がよくわからない」という方は多いのではないでしょうか。
この記事では、実際の開発現場でよく使う Git コマンドと運用ノウハウを30個 厳選してまとめました。ブックマークして、困ったときに参照してください。
対象読者
- Git の基本(add, commit, push)は知っている
- チーム開発で Git を使い始めた
- 「こういうときどうするんだっけ?」が多い
基本操作編
1. 変更状況の確認は git status と git diff のセット
# 変更されたファイルの一覧
git status
# 変更内容の詳細(まだ add していないもの)
git diff
# add 済みの変更内容(次の commit に含まれるもの)
git diff --cached
コミット前に必ず git diff --cached で「何をコミットしようとしているか」を確認する習慣をつけましょう。
2. 特定のファイルだけ add する
# ❌ 全ファイルを一括 add(意図しないファイルが入る危険)
git add .
# ✅ ファイルを指定して add
git add src/UserService.java
git add src/UserController.java
git add . は便利ですが、.env や巨大なバイナリファイルが紛れ込むリスクがあります。
3. コミットメッセージの書き方
# 良い例:「何をしたか」が一目でわかる
git commit -m "ユーザー登録機能のバリデーションを追加"
git commit -m "ログイン画面のレイアウト崩れを修正"
# 悪い例:情報が足りない
git commit -m "修正"
git commit -m "update"
git commit -m "fix"
おすすめフォーマット:
<種類>: <何をしたか>
種類の例:
feat: 新機能
fix: バグ修正
refactor: リファクタリング
docs: ドキュメント
test: テスト
chore: 雑務(依存更新、設定変更等)
4. 直前のコミットメッセージを修正する
# メッセージだけ修正(ファイルの変更はなし)
git commit --amend -m "正しいコミットメッセージ"
ただし、すでに push したコミットを amend するのは危険です。ローカルのコミットのみに使いましょう。
5. コミット履歴を見やすく表示
# 1行ずつ簡潔に表示
git log --oneline
# ブランチの分岐・マージを視覚的に表示
git log --oneline --graph --all
# 最新5件だけ表示
git log --oneline -5
ブランチ編
6. ブランチの基本操作
# ブランチ一覧を見る
git branch
# リモートブランチも含めて一覧
git branch -a
# 新しいブランチを作成して移動
git checkout -b feature/user-registration
# ブランチを切り替える
git checkout main
# Git 2.23 以降は switch が推奨
git switch main
git switch -c feature/user-registration # 作成 + 切替
7. ブランチ命名規則
feature/○○ … 新機能
fix/○○ … バグ修正
hotfix/○○ … 緊急修正
refactor/○○ … リファクタリング
docs/○○ … ドキュメント
チームでルールを統一しておくと、ブランチ名を見ただけで目的がわかります。
8. 不要なブランチを削除する
# ローカルブランチの削除(マージ済みのみ)
git branch -d feature/user-registration
# マージされていなくても強制削除
git branch -D feature/user-registration
# リモートブランチの削除
git push origin --delete feature/user-registration
マージ済みのブランチは定期的に掃除しましょう。
9. リモートの最新情報を取得する
# リモートの情報を取得(ローカルには反映しない)
git fetch
# リモートの変更を取得してマージ
git pull
# pull は fetch + merge と同じ
git fetch && git merge origin/main
git fetch で確認 → 問題なければ git merge の2ステップが安全です。
10. 他の人のブランチをローカルに持ってくる
# リモートの情報を更新
git fetch
# リモートブランチをローカルにチェックアウト
git checkout -b feature/payment origin/feature/payment
マージ・コンフリクト編
11. ブランチをマージする
# main ブランチに切り替え
git switch main
# feature ブランチをマージ
git merge feature/user-registration
12. マージコンフリクトの解消
コンフリクトが発生すると、ファイル内に以下のような表示が出ます。
<<<<<<< HEAD
現在のブランチの内容
=======
マージしようとしているブランチの内容
>>>>>>> feature/user-registration
解消手順:
# 1. コンフリクトしたファイルを開いて、正しい内容に修正
# 2. マーカー(<<<<, ====, >>>>)を削除
# 3. 修正したファイルを add
git add src/UserService.java
# 4. コミット
git commit -m "feature/user-registration のマージコンフリクトを解消"
13. マージを中止する
# マージ作業を中止して、マージ前の状態に戻る
git merge --abort
コンフリクトが複雑で手に負えないときは、一度中止して作戦を立て直しましょう。
14. rebase と merge の使い分け
# merge:履歴にマージコミットが残る(チーム開発の標準)
git merge feature/user-registration
# rebase:履歴が一直線になる(個人の作業ブランチ向き)
git rebase main
基本ルール: 共有ブランチ(main, develop)には merge、個人ブランチの整理には rebase。
取り消し・やり直し編
15. add を取り消す
# 特定ファイルの add を取り消し
git restore --staged src/UserService.java
# 全ファイルの add を取り消し
git restore --staged .
16. ファイルの変更を取り消す(add 前)
# 特定ファイルを最後のコミット状態に戻す
git restore src/UserService.java
この操作は取り消しできません。変更内容が完全に失われるため、慎重に使いましょう。
17. 直前のコミットを取り消す(変更は残す)
# コミットだけ取り消し、変更はワーキングディレクトリに残る
git reset --soft HEAD~1
18. 特定のコミットの変更を打ち消す
# 指定したコミットの変更を打ち消す新しいコミットを作成
git revert <コミットハッシュ>
reset と違い、revert は履歴を書き換えないため、push 済みのコミットにも安全に使えます。
19. 作業を一時退避する(stash)
# 現在の変更を一時退避
git stash
# 退避した変更の一覧
git stash list
# 最新の退避を復元
git stash pop
# 特定の退避を復元
git stash apply stash@{1}
「今の作業を中断して別ブランチで作業したい」ときに便利です。
リモート操作編
20. push の基本
# 現在のブランチを push
git push origin feature/user-registration
# 初回 push 時に追跡ブランチを設定
git push -u origin feature/user-registration
# 以降は省略可能
git push
21. force push は原則禁止
# ❌ 絶対にやってはいけない(他の人の作業を破壊する)
git push --force origin main
# △ 個人ブランチでどうしても必要な場合はこちら
git push --force-with-lease origin feature/my-branch
--force-with-lease は、他の人が push していない場合のみ force push を許可するオプションです。
22. リモートブランチの情報をクリーンアップ
# リモートで削除されたブランチの参照をローカルから削除
git fetch --prune
GitHub 連携編
23. Pull Request の作成(GitHub CLI)
# GitHub CLI のインストール(macOS)
brew install gh
# PR 作成
gh pr create --title "ユーザー登録機能を追加" --body "バリデーションとテストを含む"
# PR の一覧
gh pr list
# PR の詳細を見る
gh pr view 123
24. PR のレビューコメントを見る
gh pr view 123 --comments
25. Issue の作成・管理
# Issue 作成
gh issue create --title "ログイン画面のレイアウト崩れ" --body "iOS Safari で崩れる"
# Issue 一覧
gh issue list
# Issue をクローズ
gh issue close 45
便利技・設定編
26. エイリアスで入力を短縮
# よく使うコマンドにエイリアスを設定
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm "commit -m"
git config --global alias.lg "log --oneline --graph --all"
設定後は git st、git lg のように短く打てます。
27. .gitignore の書き方
# IDE
.idea/
.vscode/
*.iml
# ビルド成果物
build/
target/
dist/
node_modules/
# 環境変数・機密情報
.env
.env.*
*.pem
*.key
# OS
.DS_Store
Thumbs.db
# ログ
*.log
プロジェクト開始時に必ず設定しましょう。gitignore.io で言語やフレームワークに合わせたテンプレートを生成できます。
28. 特定のコミットを別ブランチに適用する(cherry-pick)
# 特定のコミットだけ現在のブランチに適用
git cherry-pick <コミットハッシュ>
「このバグ修正だけ main にも適用したい」というときに使います。
29. 変更した行の担当者を調べる(blame)
# 各行の最終変更者とコミットを表示
git blame src/UserService.java
「この行を変更したのは誰?」を調べるときに使います。
30. 過去の操作履歴を見る(reflog)
# Git の操作履歴を表示
git reflog
「間違えて reset してしまった」「ブランチを消してしまった」ときの救済手段です。reflog から過去の状態のハッシュを見つけて復元できます。
# reflog で見つけたハッシュに戻る
git checkout <ハッシュ>
git switch -c recovered-branch
チーム開発のルール(テンプレート)
チームで Git を使うなら、以下のルールを共有しておくと事故が減ります。
# Git 運用ルール
## ブランチ
- main: 本番環境。直接 push 禁止
- develop: 開発環境。PR 経由でマージ
- feature/*: 機能開発
- fix/*: バグ修正
## コミットメッセージ
- 形式: <type>: <description>
- type: feat / fix / refactor / docs / test / chore
## Pull Request
- PR にはレビュアーを最低1人指定
- CI が通るまでマージしない
- マージ後はブランチを削除
## 禁止事項
- main / develop への直接 push
- force push(--force)
- .env ファイルのコミット
まとめ
| カテゴリ | 覚えておくべきコマンド |
|---|---|
| 基本操作 |
status, diff, add, commit, log
|
| ブランチ |
branch, switch, checkout -b, merge
|
| 取り消し |
restore, reset --soft, revert, stash
|
| リモート |
push -u, pull, fetch, push --force-with-lease
|
| 便利技 |
cherry-pick, blame, reflog, エイリアス |
Git は最初は覚えることが多く感じますが、実際に現場でよく使うコマンドは限られています。この記事の内容をひと通り把握しておけば、日常の開発で困ることはほぼありません。
参考
@kotaro_ai_lab
AI活用や開発効率化について発信しています。フォローお気軽にどうぞ!