WIP(作業中)ワークフローのGitエイリアス
作業中のコミットの保存と復元のためのgitエイリアスを作成。コンテキスト切り替え前に現在の状態を素早くスナップショット。
Workflow Aliases
詳細な説明
作業中(WIP)エイリアス
WIPパターンはコンテキスト切り替えが必要な時に現在の状態を素早く保存する方法を提供します。ペアのエイリアスが連携して動作します:
[alias]
wip = !git add -A && git commit -m 'WIP'
unwip = !git log -1 --format='%s' | grep -q 'WIP' && git reset HEAD~1
wipの仕組み
wipエイリアスは2つの操作をチェーンするシェルコマンド(!プレフィックス付き)です:
git add -Aがすべての変更(新規、修正、削除ファイル)をステージgit commit -m 'WIP'が「WIP」メッセージでコミットを作成
unwipの仕組み
unwipエイリアスは安全を意識した逆操作です:
git log -1 --format='%s'で最後のコミットのサブジェクトを取得grep -q 'WIP'で「WIP」を含むか確認- チェックに合格した場合のみ、
git reset HEAD~1でコミットを取り消し
ガード句により、実際のコミットを誤って取り消すことを防ぎます。
実践的なWIPワークフロー
# フィーチャーAの作業中に緊急バグが発生
git wip
# バグ修正に切り替え
git checkout hotfix-branch
# ... バグを修正、コミット、プッシュ ...
# フィーチャーAに戻る
git checkout feature-a
git unwip
# 中断したところから再開
WIPとStashの比較
| 機能 | WIPエイリアス | git stash |
|---|---|---|
git logで表示 |
はい | いいえ(別のstashスタック) |
| 未追跡ファイルを含む | はい(-A付き) |
-uフラグが必要 |
| ブランチ固有 | はい(ブランチにコミット) | いいえ(グローバルstashスタック) |
| 忘れやすさ | 低い(ログに表示) | 高い(隠れている) |
WIPアプローチは可視性が高く忘れにくいため、多くのチームに好まれています。
ユースケース
コードレビュー、ホットフィックス、ミーティングデモのためにブランチを切り替える必要がある時に現在の作業を素早く保存するために使用します。unwipエイリアスにより、stashスタックを探すことなくシームレスに中断箇所から再開できます。