如何在不放弃我未提交的更改的情况下放弃Git中的隐藏弹出窗口?

问题描述 投票:0回答:1

我在执行git stash pop时进行了一些未提交的更改。如何在不放弃未提交的更改的情况下丢弃Git中的隐藏弹出窗口?

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

git git-stash
1个回答
0
投票

一旦运行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
© www.soinside.com 2019 - 2024. All rights reserved.