Gitコマンド徹底講座:知らないと損する隠れた便利機能10選

git addやcommitだけじゃない!上級者が使いこなすGitの便利コマンドを基本から応用まで体系的に解説。git stash -p、worktree、reflogなど実務で役立つ裏技を学びましょう。

公開日: 2025年10月10日
読了時間: 7
著者: ぽちょ研究所
読了時間: 7

Gitコマンド徹底講座:知らないと損する隠れた便利機能10選

はじめに

みなさん、Gitを日常的に使っていますか? git addgit commitgit pushgit 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済み)の差分だけ」を確認できます。

bash
git diff --staged

つまり、「addしたあとにさらに修正を加えたファイル」の“2つの状態”を見比べられる。 これにより、「コミットされる内容」と「まだステージされていない変更」を明確に分けて確認できます。

豆知識git diffだけだと、まだaddしていない変更が見えます。
git diff --stagedで初めて、「コミット予定分」を見ることができるのです。

git restore --staged

「やっぱりこのファイル、コミット対象から外したい!」 そんなときに便利なのがgit restore --stagedです。

bash
git restore --staged ファイル名

昔はgit reset HEAD ファイル名を使っていましたが、今はrestoreの方が推奨。 直感的で読みやすく、「ステージから復元する」と覚えましょう。


git stash -p

一時的に作業内容を退避するgit stash。 でも実は-p(patch)オプションをつけると、対話形式でどの変更をstashするか選べるんです。

bash
git stash -p

行単位で「これはstash」「これは残す」を選べるため、細かな調整に最適。 部分的な修正を別ブランチに移したいときにも役立ちます。


git worktree

これ、知っている人はかなり上級者です。

通常、1つのリポジトリでは1つのブランチしかチェックアウトできません。 しかしgit worktreeを使うと、同じリポジトリの別ブランチを別ディレクトリで同時に作業できるのです。

bash
git worktree add ../feature-A feature/A

これで、新しいフォルダ../feature-Aに別ブランチの内容が展開されます。 テストブランチやリリースブランチを並行して扱うときにとても便利です。


git switchgit restore

昔はgit checkoutが何でも屋でしたが、今は用途が分割されています。

目的 新コマンド 旧コマンド
ブランチ切り替え git switch branch名 git checkout branch名
ファイル復元 git restore ファイル名 git checkout -- ファイル名
checkoutが難しすぎる問題を解消したのがこの2コマンドです。
初心者にも読みやすく、安全に操作できるようになりました。

git log --graph --oneline --decorate --all

ブランチ構造をきれいに視覚化できる魔法のログコマンド。

bash
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して戻れない!」 そんなときの“最後の砦”がこのコマンドです。

bash
git reflog

Gitは、HEADの移動履歴をすべて記録しています。 たとえreset --hardしても、その前のコミットIDがreflogに残っていれば復活可能です。

💡 豆知識:Gitは意外にも「失敗を想定して設計されている」ツールなんです。
reflogがある限り、ほとんどの事故は取り戻せます。

git cherry-pick

別ブランチの特定コミットだけを取り込みたい時に。

bash
git cherry-pick <commit-id>

マージ全体ではなく、ピンポイントで「この修正だけ持ってきたい」という場合に大活躍。 緊急修正やホットフィックスに最適です。


git bisect

これは“探偵コマンド”。 「どのコミットでバグが混入したか」を自動的に特定します。

bash
git bisect start
git bisect bad
git bisect good <commit-id>

Gitが自動で中間コミットをチェックアウトしてくれるので、「どこで壊れたのか」を二分探索で見つけ出せます。 テストを自動化すれば、まさに“バグハンターAI”のような働きをします。


git clean -fd

作業ツリー内の「未追跡ファイル」を一掃するコマンド。

bash
git clean -fd

ビルド生成物や一時ファイルを消したいときに便利。 ただし、元に戻せないので慎重に! -nをつけるとプレビューできます。

bash
git clean -fdn

第3章 Gitをもっと便利に使うTips

1. よく使うコマンドを短縮登録しよう

毎回長いコマンドを打つのが面倒なら、.gitconfigでエイリアスを設定できます。

bash
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 stgit 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管理など)を学びましょう。