git - 如何丢弃 Git 中的 stash pop 而不丢弃我未提交的更改?
问题描述
在执行之前我做了一些未提交的更改git stash pop
。如何在stash pop
不丢弃未提交更改的情况下丢弃?
git reset --hard HEAD
将重置我的本地更改。
解决方案
运行git stash pop
更改后,更改将应用于您的工作树并删除存储。根据您运行时间pop
和现在之间的变化量,您有可能从提交日志中恢复存储(存储确实会创建一些提交引用),但这可能并不容易......
首先,按照这篇文章尝试获取您要恢复的存储提交的哈希值。找到它后,用它创建一个分支(我称之为它stash_data
,并假设我们从 branch 开始master
):
git branch stash_data [stash hash ID]
该分支现在应该只有存储的内容,没有其他更改。现在创建一个新分支来提交所有未提交的更改——包括存储和非存储(我称之为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个分店。一个应用了存储更改 ( stash_data
),一个应用了所有更改 ( combined_data
),一个位于基线 ( master
)。stash_data
应用和之间master
的差异combined_data
:
[still on branch `combined_data`]
git diff stash_data master | git apply
combined_data
现在应该只有那些不在存储中的更改,并且stash_data
应该只有在存储中的更改。
推荐阅读
- mysql - 从 Sequelize 中的两个不同的连接(包括)获取“总和”
- python-3.x - RabbitMQ Pika 连接重置 , (-1, ConnectionResetError(104, 'Connection reset by peer'))
- bots - 如何从 botpress 中的快速回复中获取有效负载
- hyperledger-fabric - Hyperledger Fabric 数据机密性
- sql-server - STDistance() 返回奇怪的结果
- azure - Azure 机器学习工作室培训 24 小时超时
- python - Eclipse 中的 Python 调试在外部块上停止
- c++ - 如何修复 C++ 中的“Hashmap 错误:”错误
- ios - Xcode 无法调试视图框架
- macos - 无法使用 CMake 链接到 Mac 上的 .so 文件