44

それで何が起こったのですか:私はブランチ「A」にいて、そのブランチでGit stashを行いました。次に、別のブランチ「B」に切り替えました。ブランチ 'A' に戻りましたが、Git スタッシュ ポップは実行しませんでした。master ブランチに切り替えてから、ブランチ 'A' に戻りました。git stash pop を実行しようとしていますが、変更を元に戻すことができないようです。そのコードを回復する必要がありますが、git stash pop を実行するたびに、ファイルの変更がリストされません。私はコードをコミットしませんでした。

行った変更を回復する方法はありますか? この点で何か助けていただければ幸いです。

4

3 に答える 3

39

私たちも同じ問題に直面しました。したがって、失われた変更を回復する方法は次のとおりです。

  1. ブランチ B に戻ります。

    git チェックアウト B

  2. オプションを使用git reflogして、reflog 情報を管理します。

    git reflog --all

    出力:

    f332d5c refs/stash@{0}: B の WIP: aa1d0c1 xyz コミット メッセージ

  3. 次に、を使用してブランチ A に切り替えますgit checkout A

  4. 最後に、失われた変更を回復します。

    git stash 適用f332d5c

于 2014-03-16T16:38:14.157 に答える
36

スタッシュは次の方法で表示できる必要があります

git stash list

また

gitk --all

また、git stash追跡されていないファイルを隠しません。これを行った後git checkout --force、別のブランチの追跡されていないファイルを別のブランチの追跡されたファイルで上書きするために別のブランチを実行した場合、そのコンテンツは失われます。スタッシュするための推奨される方法は

git stash -u

これにより、このタイプの損失を防ぐことができます。

于 2012-08-27T20:22:11.453 に答える
1

私にも似たようなことが起こりました。つまり、誤って新しいファイルを他のブランチにプッシュしていないことを確認してください。

これが私に起こったことです:私は自分のものを隠し、「dev」から「master」に切り替えて、ホットフィックスをすばやく実行しました。ホットフィックスを master にプッシュしたとき、dev 用の新しいファイルを master ブランチに追加したことに気づきませんでした。stash にそれらのファイルが含まれていると思い込んでいました。

于 2015-12-09T20:53:40.350 に答える