Skip to content

Latest commit

 

History

History
171 lines (138 loc) · 7.17 KB

File metadata and controls

171 lines (138 loc) · 7.17 KB

スタッシュ操作コマンド

スタッシュの整理、選択、一時保存と復元などのスタッシュ管理に関するコマンドです。

git stash-cleanup

重複するスタッシュを検出して自動的に削除します。各重複グループの最新のものだけを残します。

git stash-cleanup
git stash-cleanup -h             # ヘルプを表示

動作:

  1. 全てのスタッシュを分析し、ファイル構成と内容が完全に同一のスタッシュを検出します。
  2. 重複するスタッシュをグループ化して表示します。
  3. 削除確認のプロンプトを表示します(y / yes で実行)。
  4. 各重複グループから最新のスタッシュ(インデックスが最小)のみを残し、古い重複を削除します。
  5. 削除結果と残りのスタッシュ数を表示します。

引数は不要です。このコマンドは全スタッシュを自動的にスキャンして重複を検出します。誤って同じ変更を複数回スタッシュした場合や、スタッシュが溜まりすぎた場合の整理に便利です。

git stash-select

スタッシュをインタラクティブに選択して操作できます。ファイル一覧を確認しながらapply/pop/drop/showなどの操作を実行できます。

git stash-select
git stash-select -h              # ヘルプを表示

スタッシュされている変更をインタラクティブに選択して操作できます。各スタッシュのファイル一覧を確認しながら、apply(適用)、pop(適用して削除)、drop(削除)、show(差分表示)などの操作を実行できます。

実行の流れ:

  1. 全スタッシュの一覧を表示(番号、ブランチ、メッセージ、ファイル数)
  2. 番号を入力してスタッシュを選択
  3. 選択したスタッシュの詳細情報とファイル一覧を表示
  4. 操作を選択:
    • [a]pply: スタッシュを適用(スタッシュは残す)
    • [p]op: スタッシュを適用して削除
    • [d]rop: スタッシュを削除
    • [s]how: 差分を表示
    • [c]ancel: キャンセル

使用例:

git stash-select

# 実行結果例:
# スタッシュ一覧 (2 個):
#
# 1. stash@{0}
#    ブランチ: feature/login
#    メッセージ: WIP on feature/login: Add login form
#    ファイル数: 3
#
# 2. stash@{1}
#    ブランチ: main
#    メッセージ: WIP on main: Update README
#    ファイル数: 1
#
# 選択してください (番号を入力、Enterでキャンセル): 1
#
# 選択されたスタッシュ: stash@{0}
# メッセージ: WIP on feature/login: Add login form
# ブランチ: feature/login
#
# 変更されたファイル:
#   - src/components/LoginForm.tsx
#   - src/api/auth.ts
#   - src/types/user.ts
#
# 操作を選択してください:
#   [a]pply  - スタッシュを適用(スタッシュは残す)
#   [p]op    - スタッシュを適用して削除
#   [d]rop   - スタッシュを削除
#   [s]how   - 差分を表示
#   [c]ancel - キャンセル
#
# 選択 (a/p/d/s/c): a

主な機能:

  • 視覚的な一覧表示: 各スタッシュのブランチ名、メッセージ、ファイル数を一目で確認できます。
  • ファイル一覧の表示: 選択したスタッシュに含まれるファイルを確認してから操作できます。
  • 安全な操作: 各操作の意味を明示し、誤操作を防ぎます。
  • 柔軟な操作: apply(残す)、pop(削除)、drop(削除のみ)、show(表示のみ)から選択できます。

引数は不要です。git stash list で一覧を見て、git stash show stash@{0} で内容を確認して、git stash apply stash@{0} で適用する...という手順を1つのコマンドで完結できます。スタッシュが複数ある場合や、どのスタッシュを適用すべきか確認したい場合に便利です。

git pause

現在の作業を一時保存してブランチを切り替えます。変更をスタッシュして、別のブランチでの作業を開始できます。

git pause main              # 現在の作業を保存してmainに切り替え
git pause develop           # 現在の作業を保存してdevelopに切り替え
git pause -h                # ヘルプを表示

主な機能:

  • 変更の自動保存: コミットされていない変更を自動的にスタッシュに保存します。
  • 状態管理: どのブランチからどのブランチに切り替えたかを記録します(~/.git-plus/pause-state.json)。
  • 安全な上書き確認: 既に pause 状態の場合は上書き確認を行います。
  • 変更なしの最適化: 変更がない場合はスタッシュせずにブランチ切り替えのみ実行します。

使用例:

# feature-branchで作業中、急にmainで作業が必要になった場合
git pause main

# 以下が自動実行される:
# 変更を保存中...
# ✓ 変更を保存しました: stash@{0}
# ブランチを切り替え中: feature-branch → main
# ✓ main に切り替えました
#
# 元のブランチに戻るには: git resume

動作:

  1. 現在のブランチ名を記録
  2. 変更があればスタッシュに保存(メッセージ: git-pause: from <現在のブランチ>
  3. 状態を ~/.git-plus/pause-state.json に保存
  4. 指定されたブランチに切り替え

注意事項:

  • 既に pause 状態の場合は上書き確認が表示されます
  • 変更がない場合はスタッシュせずにブランチ切り替えのみ実行されます

git resume

git pause で保存した作業を復元します。元のブランチに戻り、スタッシュから変更を復元します。

git resume                  # git pause で保存した作業を復元
git resume -h               # ヘルプを表示

主な機能:

  • 元のブランチに自動復帰: pause 時のブランチに自動的に切り替わります。
  • スタッシュの自動復元: 保存されていた変更を自動的に復元します。
  • 状態のクリーンアップ: 復元後、状態ファイルを自動的に削除します。
  • エラーハンドリング: スタッシュの復元に失敗した場合でも、適切なメッセージを表示します。

使用例:

# mainでの作業が終わり、元のfeature-branchに戻る場合
git resume

# 以下が自動実行される:
# 元のブランチに戻ります: main → feature-branch
# ブランチを切り替え中: main → feature-branch
# ✓ feature-branch に切り替えました
# 変更を復元中...
# ✓ 変更を復元しました
#
# ✓ 作業の復元が完了しました

動作:

  1. 状態ファイル(~/.git-plus/pause-state.json)を読み込み
  2. 元のブランチに切り替え
  3. スタッシュから変更を復元(git stash pop
  4. 状態ファイルを削除

注意事項:

  • pause 状態がない場合はエラーメッセージを表示します
  • スタッシュの復元に失敗した場合は警告を表示し、手動での復元を促します