ドロップした stash コミットのハッシュがわかったら、それを stash として適用できます。
git stash apply $stash_hash
または、別のブランチを作成することもできます
git branch recovered $stash_hash
その後、すべての通常のツールを使用して、必要なことを行うことができます。終わったら、枝を吹き飛ばします。
ハッシュを見つける
ポップしたばかりでターミナルがまだ開いている場合は、ハッシュ値git stash pop
が画面に表示されます(ありがとう、Dolda)。
それ以外の場合は、Linux、Unix、または Windows の Git Bash でこれを使用して見つけることができます。
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
...または Windows 用の Powershell を使用:
git fsck --no-reflog | select-string 'dangling commit' | foreach { $_.ToString().Split(" ")[2] }
これにより、ブランチやタグから参照されなくなったコミット グラフの先端にあるすべてのコミットが表示されます。これまでに作成したすべての stash コミットを含む、失われたすべてのコミットは、そのグラフのどこかに表示されます。
必要な stash コミットを見つける最も簡単な方法は、おそらくそのリストを に渡すことですgitk
。
gitk --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )
...または、Powershell for Windows を使用している場合は emragins からの回答を参照してください。
これにより、リポジトリ ブラウザーが起動し、到達可能かどうかに関係なく、リポジトリ内のすべてのコミットが表示されます。
別の GUI アプリよりもコンソールで素敵なグラフを好む場合は、gitk
そこを何かに置き換えることができます。git log --graph --oneline --decorate
stash コミットを見つけるには、次の形式のコミット メッセージを探します。
somebranchの WIP : commithash Some old commit message
注: コミット メッセージは、メッセージを提供したときにメッセージを提供しなかった場合にのみ、この形式 (「WIP on」で始まる) になりますgit stash
。