我在执行git stash pop
时进行了一些未提交的更改。如何在不放弃未提交的更改的情况下丢弃Git中的隐藏弹出窗口?
[git reset --hard HEAD
将重置我的本地更改。
一旦运行git stash pop
,所做的更改就会应用到您的工作树上,并且存储被删除。取决于您从运行pop
到现在的时间之间有多少变化,有可能您可以从提交日志中恢复存储(存储确实会创建一些提交引用),但这可能并不容易...
首先,按照this post尝试获取要恢复的隐藏提交的哈希。找到它之后,用它创建一个分支(我称它为stash_data
):
git branch stash_data [stash hash ID]
现在将所做的更改提交到您当前的分支,同时包含所有隐藏和您的非隐藏更改(我将其称为combined_data
)。切换到分支stash_data
并在分支之间运行git diff:
[on original branch, with all changes]
git branch -C combined_data
git checkout combined_data
git add [your files]
git commit -m "preparing to revert a stash pop"
git checkout stash_data
git diff stash_data combined_data > diff_file
现在您有一个需要从stash_data分支撤消的补丁文件:
git checkout stash_data
git apply --reverse diff_file