如何在不删除我未提交的更改的情况下丢弃 Git 中的 stash pop?

How to discard stash pop in Git without dropping my uncommitted changes?

我在执行 git stash pop 之前做了一些未提交的更改。如何在不丢弃未提交的更改的情况下丢弃 stash pop

git reset --hard HEAD 将重置我的本地更改。

一旦你 运行 git stash pop 更改就会应用到你的工作树并且存储被删除。根据你 运行 pop 和现在之间发生了多少变化,你有机会从提交日志中恢复存储(存储确实创建了一些提交引用),但它可能不会简单...

首先,按照 this post 尝试获取您要恢复的隐藏提交的哈希值。找到后,用它创建一个 b运行ch(我称之为 stash_data,并假设我们从 b运行ch master 开始):

git branch stash_data [stash hash ID]

b运行ch 现在应该只有存储的内容和 none 其他更改。现在创建一个新的 b运行ch 来提交所有未提交的更改——存储 非存储(我将其称为 combined_data)。

[on `master` branch, with all changes]
git checkout -b combined_data
git add [your files]
git commit -m "preparing to revert a stash pop"

现在有 3 个 b运行ches。一个应用了隐藏更改 (stash_data),一个应用了所有更改 (combined_data),一个在基线 (master)。将 stash_datamaster 之间的差异应用于 combined_data:

[still on branch `combined_data`]
git diff stash_data master | git apply

combined_data 现在应该只有那些 不在 的变化,而 stash_data 应该只有 的变化被藏起来了。