14

git add -pを使用してインデックスにいくつかの変更を追加した後、git stashを発行しましたが、-keep-indexを追加するのを忘れました。それから私は愚かにgitstashpopを実行し、インデックスへの変更はすべてなくなりました。git stashの前の状態にインデックスを回復する方法はありますか?

4

2 に答える 2

9

完了したばかりの場合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を前の位置に戻します。

于 2017-10-09T21:31:25.217 に答える
6

これは仕事をします:

git stash apply --index

編集:インデックスがすでに失われていることを考慮して、を実行し、git fsck --unreachableそれが提供する最新のコミットを検査する必要があります。失われたインデックスをそこで確認できる必要があります。その後、あなたはgit cherry-pickそれをすることができます。

于 2013-11-30T22:35:14.027 に答える