トラブルシューティング

stash を使いこなすコツ

stash に名前をつける方法、一覧管理、apply と pop の違いなど実践的な使い方

stash を使いこなすコツ diagram

stash に名前をつける

git stash だけだと「WIP on branch-name」という自動メッセージになり、後から何の作業だったかわかりません。

-m オプションで説明をつける習慣にしましょう。

複数の stash を使い分ける場合に特に重要です。

bash
# 説明付きで stash
git stash -m "ログイン画面のレイアウト調整中"

# 一覧で内容がわかる
git stash list
# stash@{0}: On main: ログイン画面のレイアウト調整中

apply と pop の違い

git stash pop は変更を復元した後、stash リストからそのエントリを削除します。

git stash apply は変更を復元しますが、stash リストには残ります。

複数のブランチに同じ変更を適用したい場合は apply を使い、一度だけ復元する場合は pop を使います。

bash
# pop: 復元して削除
git stash pop

# apply: 復元するが残す
git stash apply

# 特定の stash を指定
git stash apply stash@{2}

stash の整理

  • 定期的に git stash list で確認

    stash は一時的な退避場所です。長期間放置すると中身が不明な stash が溜まり管理が困難になります。

  • 不要な stash は git stash drop で削除

    特定のエントリだけを削除できます。削除前に git stash show -p stash@{N} で内容確認するのがおすすめです。

  • 全削除は git stash clear

    すべての stash を一括削除します。取り消せないので慎重に実行します。

bash
# 特定の stash を削除
git stash drop stash@{1}

# すべての stash を削除
git stash clear

# stash の中身を確認(削除前に)
git stash show stash@{0}
git stash show -p stash@{0}   # 差分も表示

stash から新しいブランチを作る

stash した変更を新しいブランチで作業したい場合、git stash branch を使うと便利です。

stash 時点のコミットから新しいブランチを作成し、stash の内容を適用した状態で開始します。

bash
# stash から新しいブランチを作成
git stash branch feature/new-work

# 特定の stash を指定してブランチ作成
git stash branch feature/fix stash@{2}

関連コマンド