首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我能恢复交互重基过程中丢失的提交吗?

我能恢复交互重基过程中丢失的提交吗?
EN

Stack Overflow用户
提问于 2022-04-05 10:41:04
回答 2查看 217关注 0票数 2

所以我有个奇怪的情况。

我在4次提交的基础上做了一个交互的重基。我试图压扁,但我做错了,我得到了以下错误:

代码语言:javascript
运行
复制
error: cannot 'squash' without a previous commit You can fix this with
'git rebase --edit-todo' and then run 'git rebase --continue'. Or you
can abort the rebase with 'git rebase --abort'.

我决定运行git rebase --edit-todo,当我这样做时,只出现了最后一个提交。我将其从squash更改为pick,并运行git rebase --continue,但现在看来,我试图压缩的其他3次提交已不再存在。

所以我早上的工作似乎失去了。

一定有办法恢复这些,对吧?

我该怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-05 11:27:12

这是吉特。什么都不会失去。整个重新基地是不可撤销的!

只需使用git reflog来定位重基之前所处的位置。很明显,它是哪一种,因为第一种会描述重基。

现在很难重设到那个承诺。普雷斯托,你已经拆除了基地。

现在只需在下一次正确地执行重基。

举例说明。首先,我要谈一谈这种情况:

代码语言:javascript
运行
复制
* 18c9859 (HEAD -> what) zz
* e1af86b yy
* 47853b7 xx
* 45ebca0 (origin/main, origin/HEAD, main) zzz

我互动重基,清除yyxx

代码语言:javascript
运行
复制
% git rebase -i main
Successfully rebased and updated refs/heads/what.

目前的情况是:

代码语言:javascript
运行
复制
* e2d37cd (HEAD -> what) zz
* 45ebca0 (origin/main, origin/HEAD, main) zzz

但这不是我的本意!xxyy不见了!哦诺兹!

但是等等。没问题。我们可以撤销。首先,看看翻版:

代码语言:javascript
运行
复制
% git reflog
e2d37cd (HEAD -> what) HEAD@{0}: rebase (finish): returning to refs/heads/what
e2d37cd (HEAD -> what) HEAD@{1}: rebase (pick): zz
45ebca0 (origin/main, origin/HEAD, main) HEAD@{2}: rebase (start): checkout main
18c9859 HEAD@{3}: commit: zz [this is it]
...

好的,撤销:

代码语言:javascript
运行
复制
% git reset --hard HEAD@{3}

都修好了!我回到了重新基地之前的状态:

代码语言:javascript
运行
复制
* 18c9859 (HEAD -> what) zz
* e1af86b yy
* 47853b7 xx
* 45ebca0 (origin/main, origin/HEAD, main) zzz

派对开始了!

票数 6
EN

Stack Overflow用户

发布于 2022-04-05 11:02:58

您应该:

代码语言:javascript
运行
复制
git reflog

# Write down the lost commit hash

git cherry-pick <LOST_COMMIT_HASH>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71750366

复制
相关文章

相似问题

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