【Git中級者への道】知ってると得する発展Gitコマンド集2025|cherry-pick・rebase・stash完全理解
git cherry-pick、rebase、stashなど、知っていると開発効率が劇的に上がるGitコマンドを図解で丁寧に解説。仕組みから理解できる。
知ってると得する発展Gitコマンド集2025
「git add、commit、push は分かった。でも、もっと便利に使えないの?」
そう思ったあなたは、次のステップに進む準備ができています。
この記事では、知っていると開発効率が劇的に上がるGitコマンドを紹介します。cherry-pick、rebase、stashなど、名前だけ聞くと難しそうですが、仕組みはとてもシンプルです。
「どういうロジックで動くのか」を図解で丁寧に説明するので、安心して読み進めてください。
基本コマンドをまだ覚えていない方は、まず【超初心者向け】Gitコマンド完全チートシート2025をご覧ください。
この記事で学べるコマンド
| コマンド | 一言で言うと | 使う場面 |
|---|---|---|
git stash | 作業を一時退避 | 急な割り込み対応 |
git cherry-pick | 特定コミットだけ取り込む | 必要な変更だけ欲しい時 |
git rebase | 履歴を直線的に整理 | きれいな履歴にしたい時 |
git revert | 打ち消しコミットを作る | 安全に取り消したい時 |
git bisect | バグ発生地点を特定 | どこで壊れたか調べたい時 |
git reflog | 操作履歴を見る | やらかした時の復旧 |
git worktree | 複数ブランチを同時作業 | 並行作業したい時 |
それでは、一つずつ見ていきましょう。
git stash - 作業を一時退避する
どういうロジック?
stash(スタッシュ)は「一時退避ボックス」です。
作業中の変更を一旦しまっておいて、後で取り出せます。
実践シナリオ
「新機能を開発中に、緊急のバグ修正依頼が来た!」
こんな時、stashが活躍します。
コマンド一覧
| コマンド | 何をする |
|---|---|
git stash | 作業を退避(メッセージなし) |
git stash push -m "メッセージ" | メッセージ付きで退避 |
git stash list | 退避した一覧を見る |
git stash pop | 最新を取り出して削除 |
git stash apply | 最新を取り出す(削除しない) |
git stash drop | 最新を削除 |
popとapplyの違い: popは取り出したら消える、applyは残る。applyは「念のため残しておきたい」時に使います。
git cherry-pick - 特定のコミットだけ取り込む
どういうロジック?
cherry-pick(チェリーピック)は「つまみ食い」です。
別のブランチから、欲しいコミットだけを選んで持ってこれます。
実践シナリオ
「featureブランチで作ったバグ修正を、先にmainに適用したい」
コマンド
git rebase - 履歴を直線的に整理する
どういうロジック?
rebase(リベース)は「履歴の付け替え」です。
mergeとの違いを図で見てみましょう。
いつ使う?
- merge: チームで作業している時(履歴を残したい)
- rebase: 個人の作業ブランチを整理したい時
コマンド
インタラクティブrebase(コミットをまとめる)
細かく分けすぎたコミットを1つにまとめたい時に使います。
エディタが開いて、こんな画面が出ます:
重要な注意点
公開済み(pushした)コミットはrebaseしない!
rebaseすると履歴が書き換わるため、他の人の作業と衝突します。rebaseは自分だけの作業ブランチで使いましょう。
git revert - 安全に取り消す
どういうロジック?
revert(リバート)は「打ち消しコミット」を作ります。
resetとの違いを図で見てみましょう。
いつ使う?
- reset: まだpushしていないコミットを取り消したい
- revert: すでにpushしたコミットを安全に取り消したい
revertは履歴を消さないので、チーム開発でも安心して使えます。
コマンド
git bisect - バグの発生地点を特定する
どういうロジック?
bisect(バイセクト)は「二分探索」でバグを見つけます。
「ここは動いてた」「ここはバグってる」の間を自動で絞り込んでくれます。
100コミットあっても、7回程度の確認で特定できます(log₂100 ≈ 7)。
コマンド
git reflog - 全ての操作履歴を見る
どういうロジック?
reflog(リフログ)は「Gitの操作履歴」です。
git logはコミット履歴だけですが、reflogは全ての操作を記録しています。
いつ使う?
「やらかした!」時の最終手段です。
reset --hardで消してしまったコミットを復元- 間違えてブランチを削除してしまった
- rebaseで履歴がおかしくなった
コマンド
reflogがあるので、Gitでは「完全に消える」ことはほぼありません。 安心してください。
git worktree - 複数ブランチを同時に作業
どういうロジック?
worktree(ワークツリー)は「ブランチごとにフォルダを分ける」機能です。
通常、ブランチを切り替えるとファイルの内容が変わりますが、worktreeを使うと別フォルダとして両方を開けるようになります。
いつ使う?
- レビュー中のコードと自分の作業を同時に見たい
- 2つの機能を並行して開発したい
- ビルドに時間がかかるプロジェクトで切り替えを避けたい
コマンド
状況別「どれを使う?」早見表
| こうしたい | 使うコマンド |
|---|---|
| 作業を一時中断したい | git stash |
| 特定のコミットだけ欲しい | git cherry-pick |
| 履歴をきれいにしたい | git rebase |
| 公開済みの変更を取り消したい | git revert |
| いつからバグってた? | git bisect |
| やらかしを復旧したい | git reflog |
| 2つのブランチを同時に見たい | git worktree |
よくある失敗と復旧方法
rebase中にコンフリクトで詰まった
間違えて reset --hard した
cherry-pickでコンフリクト
まとめ
今回紹介したコマンドをもう一度おさらいします。
全部を今すぐ覚える必要はありません。
「こういう時に使えるコマンドがあるんだな」と頭の片隅に入れておいて、必要な時にこのページに戻ってくれば大丈夫です。
シリーズリンク
- 第1弾:【超初心者向け】Gitコマンド完全チートシート2025 - 基本に戻りたい方はこちら
- 第3弾:特殊コマンド&CI/CD入門2025 - tag、hooks、GitHub Actionsで自動化
一緒にGitを使いこなしていきましょう。