首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在git stash / git stash弹出后恢复索引?

如何在git stash / git stash弹出后恢复索引?
EN

Stack Overflow用户
提问于 2013-01-11 02:08:54
回答 2查看 3.9K关注 0票数 14

在使用git add index向索引添加了一些更改之后,我发出了一个git stash,但忘记了添加-p -index。然后我愚蠢地做了一个git stash pop,我对索引所做的所有更改都消失了。有没有办法将索引恢复到git存储之前的状态?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-10 05:31:25

当您刚刚执行完git stash pop时,输出中的最后一行是:

代码语言:javascript
运行
复制
Dropped refs/stash@{0} (ca82a6dff817ec66f44342007202690a93763949)

如果您丢失了提交散列,请参阅How to recover a dropped stash in Git?以查找提交散列。

获得散列后,

  • 丢弃所有当前更改(已应用stash):

git reset --hard

并使用其id重新应用stash,这次使用index:

git stash apply ca82a6d --index

  • 只重置了索引,这里的要点是索引被保存为存储的第二个父级:

git reset ca82a6d^2 .

注意末尾的圆点。如果不指定它,它还会将HEAD移动到索引(索引将显示为提交)。在这种情况下,运行git reset --soft HEAD@{1}将磁头返回到它以前的位置。

票数 9
EN

Stack Overflow用户

发布于 2013-12-01 06:35:14

这将完成以下工作:

代码语言:javascript
运行
复制
git stash apply --index

编辑:考虑到索引已经丢失,您应该运行git fsck --unreachable并检查它提供的最新提交。你必须能够在那里看到你丢失的索引。在此之后,您可以对其执行git cherry-pick

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14264467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档