対処法
1.Commitする前に変更内容を一旦退避
$ git stash (save)
stash
(退避場所)へ移す。save
は省略可。
masterブランチは作業前の状態に戻り、git status
で確認すると修正内容は消えている。
2.本来作業予定だったブランチへの切り替え
$ git checkout <切り替えたいブランチ名>
ブランチの切り替え、新規作成の場合はcheckout -b ブランチ名
3.退避させていた変更内容を適用
$ git stash pop #stashを適用後、ファイルを削除
$ git stash apply #stashを適用後、ファイルを残す
$ git stash pop stash@{N} # N番目のスタッシュを適用後、ファイルを削除
Nはgit stash list
で確認。
masterブランチでCommitまで済ませてしまった場合の対処法
1.Commit前の状態に戻してから、前述の「対処法」1〜3を実行
$ git reset --soft HEAD^
--soft
:変更内容を残す
HEAD^
:直前のコミット
その他stash
関連コマンド
$ git stash show stash@{N} # N番目にスタッシュしたファイルの一覧表示
$ git stash show -p stash@{N} # N番目にスタッシュしたファイルの変更差分を表示
$ git stash drop # 最新のスタッシュを削除
$ git stash drop stash@{N} # N番目のスタッシュを削除
$ git stash -k # unstage ファイル全てスタッシュ
$ git stash -u # untrackファイルも含め全てスタッシュ
$ git stash clear # スタッシュを全削除