bot*_*bot 3 git github gitlab git-interactive-rebase
所以我遇到了这种奇怪的情况。
我正在对 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'.
Run Code Online (Sandbox Code Playgroud)
我决定运行git rebase --edit-todo,当我这样做时,只出现了最后一次提交。我将其从 更改为squash,pick然后运行git rebase --continue,但现在看来我试图压缩的其他 3 个提交已经不存在了。
所以我早上的工作似乎失败了。
一定有办法恢复这些,对吗?
我该怎么做?
这是吉特。没有什么是永远不会失去的。整个变基是不可撤销的!
只需用于git reflog定位您在变基之前所在的位置即可。很明显它是哪一个,因为第一个将描述变基。
现在只需硬重置该提交即可。很快,您已经撤消了变基。
现在只需下次正确执行变基即可。
例子。我从这种情况开始:
* 18c9859 (HEAD -> what) zz
* e1af86b yy
* 47853b7 xx
* 45ebca0 (origin/main, origin/HEAD, main) zzz
Run Code Online (Sandbox Code Playgroud)
我交互式变基,清除yy和xx.
% git rebase -i main
Successfully rebased and updated refs/heads/what.
Run Code Online (Sandbox Code Playgroud)
现在的情况是:
* e2d37cd (HEAD -> what) zz
* 45ebca0 (origin/main, origin/HEAD, main) zzz
Run Code Online (Sandbox Code Playgroud)
但这不是我想要做的!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]
...
Run Code Online (Sandbox Code Playgroud)
好的,撤消:
% git reset --hard HEAD@{3}
Run Code Online (Sandbox Code Playgroud)
全部修好了!我又回到了变基之前的位置:
* 18c9859 (HEAD -> what) zz
* e1af86b yy
* 47853b7 xx
* 45ebca0 (origin/main, origin/HEAD, main) zzz
Run Code Online (Sandbox Code Playgroud)
派对!
| 归档时间: |
|
| 查看次数: |
1043 次 |
| 最近记录: |