よくやるブランチを切替忘れて変更してしまった時

本当によくやってしまうブランチ切替忘れ。切替忘れていてファイルの編集などしてしまったときに変更した内容を一時的に退避させておいて、ブランチを切り替えて一時退避した変更点をそのブランチに適用させるのにgit stashというコマンドを使用します。

変更した内容の退避方法

まずは退避から。以下のコマンドで退避!

git stash -u

git addした対象ファイルやディレクトもgit addしていないものも含まれます。新規作成ファイルやディレクトリも対象になります。

退避した情報の一覧を表示する方法

次に退避した情報(かたまり)を一覧で表示する方法

git stash list
stash@{0}: WIP on main: xxxxx
stash@{1}: WIP on develop: xxxxx

stash@{n}stash1回分の情報です。
WIP on ~ はブランチ名。
xxxxxstash実行時のHEADのコミットハッシュとコミットメッセージです。

退避した情報を元に戻す方法

続いて退避した情報を戻します。これがやりたい。

git stash apply stash@{0}

git stash apply stash名で戻すことができます。このときに変更を適用したいブランチに切り替えておくこと。 stash名を省略すると直近のstash情報を適用してくれます。

退避した情報を削除する方法

変更を適用したら退避した情報を削除しておきます。

git stash drop stash@{0}

git stash apply stash名で戻すことができます。このときに変更を適用したいブランチに切り替えておくこと。 git stash applyと同じくstash名を省略すると直近のstash情報を削除してくれます。便利。

退避した情報を元に戻すと同時に削除もする方法

applydropを一度に行う方法も紹介。こっちが使用方法としては多いかも。

git stash pop stash@{0}

これで変更を適用と同時に退避した情報も削除してくれます。すてき。

その他便利コマンド

退避した情報の詳細を見る方法

git stash show stash@{0}

これで変更したファイルやディレクトが一覧で見れます。変更点が多いとToo many revisions specified: 'stash@' 'MAA=' 'xml' 'text'と表示されて怒られる模様。

変更内容の詳細が見たい場合は、-pパラメータを付与すると見ることができます。

git stash show stash@{0} -p

退避した情報をまとめて削除する方法

git stash clear

これできれいさっぱり!