git add -pを使用してインデックスにいくつかの変更を追加した後、git stashを発行しましたが、-keep-indexを追加するのを忘れました。それから私は愚かにgitstashpopを実行し、インデックスへの変更はすべてなくなりました。git stashの前の状態にインデックスを回復する方法はありますか?
2 に答える
完了したばかりの場合git stash pop
、出力の最後の行は次のとおりです。
Dropped refs/stash@{0} (ca82a6dff817ec66f44342007202690a93763949)
紛失した場合は、Gitでドロップされた隠し場所を回復する方法を参照してください。コミットハッシュを検索します。
ハッシュを取得したら、次のいずれかを実行します。
現在の変更をすべて削除します(適用されたスタッシュ):
git reset --hard
そして、今度はインデックスを使用して、そのIDを使用してスタッシュを再適用します。
git stash apply ca82a6d --index
インデックスのみをリセットします。ここでのポイントは、インデックスがstashの2番目の親として保存されることです。
git reset ca82a6d^2 .
最後のドットに注意してください。指定しない場合は、HEADもインデックスに移動します(インデックスはコミットとして表示されます)。この場合、実行
git reset --soft HEAD@{1}
してHEADを前の位置に戻します。
これは仕事をします:
git stash apply --index
編集:インデックスがすでに失われていることを考慮して、を実行し、git fsck --unreachable
それが提供する最新のコミットを検査する必要があります。失われたインデックスをそこで確認できる必要があります。その後、あなたはgit cherry-pick
それをすることができます。