目次
Gitコマンド徹底講座:知らないと損する隠れた便利機能10選
はじめに
みなさん、Gitを日常的に使っていますか? git add、git commit、git push、git pull… これらのコマンドはもうおなじみですね。
しかし、Gitにはこれ以外にも「上級者だけが使いこなしている」コマンドや隠し機能がたくさんあるんです。
今日はそんなGitの"裏技"を、基本コマンドの復習から応用的な使い方まで、体系的に見ていきましょう。
第1章 基本コマンドの整理
まずは、日常的に使われる代表的なGitコマンドをおさらいしておきます。
| 操作内容 | コマンド例 | 説明 |
|---|---|---|
| ファイルをステージ | git add ファイル名 |
コミット対象に追加 |
| 状態を確認 | git status |
変更・ステージ状況の確認 |
| コミット | git commit -m "コメント" |
ローカルに記録 |
| リモートに送信 | git push origin main |
GitHubなどに反映 |
| 変更を取得 | git pull |
リモートとの差分を取得 |
| 履歴を見る | git log --oneline |
短縮表示で履歴確認 |
これらは「日常会話」レベルのGitです。 では次に、「知っていると圧倒的に作業が速くなる」便利機能を紹介します。
第2章 中級者も意外と知らない!便利コマンド編
① git diff --staged
みなさん、git diffはご存知ですね? しかし、--stagedオプションをつけると「ステージング済み(add済み)の差分だけ」を確認できます。
git diff --staged
つまり、「addしたあとにさらに修正を加えたファイル」の“2つの状態”を見比べられる。 これにより、「コミットされる内容」と「まだステージされていない変更」を明確に分けて確認できます。
✅ 豆知識:git diffだけだと、まだaddしていない変更が見えます。git diff --stagedで初めて、「コミット予定分」を見ることができるのです。
② git restore --staged
「やっぱりこのファイル、コミット対象から外したい!」 そんなときに便利なのがgit restore --stagedです。
git restore --staged ファイル名
昔はgit reset HEAD ファイル名を使っていましたが、今はrestoreの方が推奨。 直感的で読みやすく、「ステージから復元する」と覚えましょう。
③ git stash -p
一時的に作業内容を退避するgit stash。 でも実は-p(patch)オプションをつけると、対話形式でどの変更をstashするか選べるんです。
git stash -p
行単位で「これはstash」「これは残す」を選べるため、細かな調整に最適。 部分的な修正を別ブランチに移したいときにも役立ちます。
④ git worktree
これ、知っている人はかなり上級者です。
通常、1つのリポジトリでは1つのブランチしかチェックアウトできません。 しかしgit worktreeを使うと、同じリポジトリの別ブランチを別ディレクトリで同時に作業できるのです。
git worktree add ../feature-A feature/A
これで、新しいフォルダ../feature-Aに別ブランチの内容が展開されます。 テストブランチやリリースブランチを並行して扱うときにとても便利です。
⑤ git switch と git restore
昔はgit checkoutが何でも屋でしたが、今は用途が分割されています。
| 目的 | 新コマンド | 旧コマンド |
|---|---|---|
| ブランチ切り替え | git switch branch名 |
git checkout branch名 |
| ファイル復元 | git restore ファイル名 |
git checkout -- ファイル名 |
✅checkoutが難しすぎる問題を解消したのがこの2コマンドです。
初心者にも読みやすく、安全に操作できるようになりました。
⑥ git log --graph --oneline --decorate --all
ブランチ構造をきれいに視覚化できる魔法のログコマンド。
git log --graph --oneline --decorate --all
これで以下のような「枝分かれ付きの履歴」が見られます。
* 8abf9e3 (HEAD -> main) Merge branch 'feature/ui' || * a712dfe (feature/ui) Add new button * | 57ac03c Fix typo |/ * 1ac923e Initial commit
チーム開発で「どのブランチがどこで分岐したのか」を一目で把握可能。
⑦ git reflog
「コミットを消しちゃった!」「resetして戻れない!」 そんなときの“最後の砦”がこのコマンドです。
git reflog
Gitは、HEADの移動履歴をすべて記録しています。 たとえreset --hardしても、その前のコミットIDがreflogに残っていれば復活可能です。
💡 豆知識:Gitは意外にも「失敗を想定して設計されている」ツールなんです。reflogがある限り、ほとんどの事故は取り戻せます。
⑧ git cherry-pick
別ブランチの特定コミットだけを取り込みたい時に。
git cherry-pick <commit-id>
マージ全体ではなく、ピンポイントで「この修正だけ持ってきたい」という場合に大活躍。 緊急修正やホットフィックスに最適です。
⑨ git bisect
これは“探偵コマンド”。 「どのコミットでバグが混入したか」を自動的に特定します。
git bisect start git bisect bad git bisect good <commit-id>
Gitが自動で中間コミットをチェックアウトしてくれるので、「どこで壊れたのか」を二分探索で見つけ出せます。 テストを自動化すれば、まさに“バグハンターAI”のような働きをします。
⑩ git clean -fd
作業ツリー内の「未追跡ファイル」を一掃するコマンド。
git clean -fd
ビルド生成物や一時ファイルを消したいときに便利。 ただし、元に戻せないので慎重に! -nをつけるとプレビューできます。
git clean -fdn
第3章 Gitをもっと便利に使うTips
1. よく使うコマンドを短縮登録しよう
毎回長いコマンドを打つのが面倒なら、.gitconfigでエイリアスを設定できます。
git config --global alias.st status git config --global alias.br branch git config --global alias.lg "log --oneline --graph --decorate --all"
これで、 git lg → かっこいい履歴表示 git st → git status といった短縮形が使えます。
2. 「2つの世界」を同時に使いこなす
Gitの魅力は、「実験と安全の両立」にあります。 worktreeで複数環境を並行運用し、stashで一時保存し、reflogで過去に戻る。 これらを組み合わせると、「壊すことを恐れずに試す」ことができます。
第4章 まとめ
みなさん、いかがでしたか?
Gitは一見難しそうですが、内部的にはとても“人間的”な設計がされています。 ミスを想定し、やり直しがきく構造。 それを理解すると、バージョン管理が一気に自由になります。
今日のキーワードまとめ:
| 機能 | コマンド例 | 効果 |
|---|---|---|
| 差分確認(ステージ済) | git diff --staged |
コミット前の状態確認 |
| ステージ解除 | git restore --staged |
addを取り消す |
| 部分stash | git stash -p |
変更の一部だけ退避 |
| 複数作業ツリー | git worktree |
ブランチ同時作業 |
| ログの視覚化 | git log --graph --oneline --decorate --all |
ブランチの流れを見やすく |
| 復旧コマンド | git reflog |
誤操作からの復帰 |
| 一部取り込み | git cherry-pick |
指定コミットだけ導入 |
| バグ追跡 | git bisect |
バグ発生箇所を特定 |
| クリーンアップ | git clean -fd |
未追跡ファイル削除 |
| エイリアス設定 | git config --global alias.◯◯ |
コマンド短縮 |
おわりに
Gitは「過去の自分との対話ツール」です。 一つひとつのコミットは、未来の自分へのメッセージ。 便利コマンドを使いこなせば、作業効率は数倍に、安心感は数十倍になります。
次回は、GitHubと組み合わせたワークフロー最適化編(gh CLI、Actions、Secrets管理など)を学びましょう。