⚙️ Gitコマンド完全攻略
〜オプションの意味まで徹底解説!〜
🧭 本記事は「初心者でもわかるGit & GitHub入門」の補足記事です。
この記事では、Gitの主要コマンドとオプションの意味をすべて理解できるように解説します。
🗂 1. Gitの世界をざっくり整理
Gitは「変更履歴を管理するツール」ですが、3つのエリアで動いています。
+----------------------+------------------+----------------+
| 作業ディレクトリ | ステージングエリア | ローカルリポジトリ |
+----------------------+------------------+----------------+
| 編集中のファイル | コミット予定 | 確定済み履歴 |
それぞれの関係を操作するのが Gitコマンド です。
🧩 2. 基本コマンド(最初に覚える10個)
| コマンド | 意味 | よく使うオプション |
|---|---|---|
git init |
新しいGitリポジトリを作る |
--bare:作業用ファイルを持たないリポジトリを作成 |
git clone <URL> |
既存リポジトリをコピー |
--branch <name>:特定のブランチだけ取得 |
git status |
変更状況を確認 |
-s:短い形式で表示 |
git add <file> |
ファイルをステージに登録 |
-A:全変更を追加, -p:部分的に追加 |
git commit -m "msg" |
ステージした変更を保存 |
-a:addとcommitを同時に行う, --amend:直前のcommitを修正 |
git log |
履歴を表示 |
--oneline:1行で簡潔表示, --graph:ブランチ構造を可視化 |
git diff |
変更点を比較 |
--staged:ステージ済みとの差分 |
git checkout <branch> |
ブランチを切り替え |
-b:新しくブランチを作って切り替え |
git branch |
ブランチ一覧 |
-a:リモートも含む, -d:削除 |
git merge <branch> |
ブランチを統合 |
--no-ff:必ずマージコミットを作る |
🧠 3. ファイル操作編(add, commit, reset)
▶️ git add
git add index.js
変更をステージに登録。
未追跡ファイル(Untracked)もこれで追跡対象になります。
-
git add .→ カレントディレクトリ配下をすべて追加 -
git add -p→ 対話的に変更部分を選んで追加(細かく管理したいとき便利)
💾 git commit
git commit -m "Add user login feature"
オプション解説:
| オプション | 意味 |
|---|---|
-m |
メッセージを指定 |
-a |
変更済みの追跡ファイルを自動追加(未追跡は除外) |
--amend |
直前のコミットを修正(メッセージや内容) |
例:
git commit --amend -m "Fix: correct login validation"
→ 直前のコミットを上書きします(GitHubにpush後は注意!)
⏪ git reset
| コマンド | 効果 | 戻る範囲 |
|---|---|---|
git reset --soft HEAD~1 |
コミットだけ取り消し(変更は残る) | ローカル履歴のみ |
git reset --mixed HEAD~1 |
ステージ解除(ファイルは残る) | 作業ディレクトリは維持 |
git reset --hard HEAD~1 |
完全に取り消し(変更消滅) | 注意:復元できない! |
🌿 4. ブランチ操作編
🌱 作成と切り替え
git branch feature/api
git checkout feature/api
# まとめて作成&切り替え
git checkout -b feature/api
🧹 削除
git branch -d feature/api # マージ済みブランチを削除
git branch -D feature/api # 強制削除
📜 一覧表示
git branch -a # ローカル+リモートすべて表示
🔀 5. マージ・リベース・フェッチ
💫 git merge
ブランチを統合します。
git checkout main
git merge feature/api
オプション:
| オプション | 意味 |
|---|---|
--no-ff |
マージコミットを必ず作成(履歴を明確に) |
--squash |
まとめて1つのコミットに圧縮してマージ |
🧭 git rebase
履歴を整理して「1本道」にする。
チーム開発ではPR前の整形などに使います。
git checkout feature/api
git rebase main
💡 rebaseは「mainに追いつく」操作。
競合(コンフリクト)が起きた場合は手動修正が必要。
🌍 git fetch / git pull
| コマンド | 意味 | 注意点 |
|---|---|---|
git fetch |
リモートの更新を取得(反映しない) | 破壊的でない、安全 |
git pull |
fetch + merge(ローカル更新) | 履歴が複雑になることも |
おすすめは:
git fetch origin
git merge origin/main
で安全に更新を取り込む!
🧰 6. 便利な表示コマンド
| コマンド | 説明 |
|---|---|
git log --oneline --graph --decorate --all |
履歴を木構造で表示 |
git show <commit> |
特定のコミットの詳細を見る |
git blame <file> |
各行を誰が・いつ書いたか |
git diff branchA..branchB |
2ブランチ間の差分 |
git tag |
バージョン管理タグを一覧表示 |
🧱 7. Gitの状態を戻す・復元する
| コマンド | 用途 | 注意点 |
|---|---|---|
git checkout -- <file> |
変更を元に戻す | 未コミット分のみ |
git restore <file> |
同上(新コマンド) | 推奨方法 |
git revert <commit> |
特定のコミットだけ打ち消す | push後でも安全 |
例:
git revert 1a2b3c4
→ そのコミットを「取り消す変更」を新しいコミットとして追加します。
🧩 8. 上級者がよく使うオプション
| コマンド | オプション | 意味 |
|---|---|---|
git log -p |
各コミットの差分も表示 | |
git stash |
一時的に変更を退避 | |
git cherry-pick <hash> |
特定のコミットだけ他ブランチへ反映 | |
git bisect |
バグを導入したコミットを二分探索で特定 | |
git reflog |
過去すべてのHEAD移動履歴を表示(緊急時の救命) |
🧩 9. Gitの設定(.gitconfig)
Gitの基本設定は以下で確認・変更できます。
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --global core.editor "code --wait" # VSCodeをGitのエディタに
💡 10. 実践Tips集
✅ 1コミット1目的
→ 「1コミットで1つの修正」が原則。履歴がきれい。
✅ ブランチ名にルールをつける
例:
-
feature/〇〇新機能 -
fix/〇〇バグ修正 -
docs/〇〇ドキュメント
✅ コミットメッセージを英語で書くコツ
Add: 新しい機能追加
Fix: バグ修正
Refactor: リファクタリング
Docs: ドキュメント変更
🧭 まとめ
- Gitコマンドは「何を、どこに、どう反映するか」を制御する仕組み。
-
add→commit→push→mergeの流れを常に意識しよう。 - オプションの意味を理解すると、「怖いGit」が一気に「便利なGit」に変わります。
💬 次の記事予定:
「Gitでコンフリクトが起きたときの解決方法」を図付きで解説!