所以我有个奇怪的情况。
我在4次提交的基础上做了一个交互的重基。我试图压扁,但我做错了,我得到了以下错误:
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次提交已不再存在。
所以我早上的工作似乎失去了。
一定有办法恢复这些,对吧?
我该怎么做呢?
发布于 2022-04-05 11:27:12
这是吉特。什么都不会失去。整个重新基地是不可撤销的!
只需使用git reflog来定位重基之前所处的位置。很明显,它是哪一种,因为第一种会描述重基。
现在很难重设到那个承诺。普雷斯托,你已经拆除了基地。
现在只需在下一次正确地执行重基。
举例说明。首先,我要谈一谈这种情况:
* 18c9859 (HEAD -> what) zz
* e1af86b yy
* 47853b7 xx
* 45ebca0 (origin/main, origin/HEAD, main) zzz我互动重基,清除yy和xx。
% git rebase -i main
Successfully rebased and updated refs/heads/what.目前的情况是:
* e2d37cd (HEAD -> what) zz
* 45ebca0 (origin/main, origin/HEAD, main) zzz但这不是我的本意!xx和yy不见了!哦诺兹!
但是等等。没问题。我们可以撤销。首先,看看翻版:
% 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]
...好的,撤销:
% git reset --hard HEAD@{3}都修好了!我回到了重新基地之前的状态:
* 18c9859 (HEAD -> what) zz
* e1af86b yy
* 47853b7 xx
* 45ebca0 (origin/main, origin/HEAD, main) zzz派对开始了!
发布于 2022-04-05 11:02:58
您应该:
git reflog
# Write down the lost commit hash
git cherry-pick <LOST_COMMIT_HASH>https://stackoverflow.com/questions/71750366
复制相似问题