完全取消变基


255

我执行了这样的变基:

git rebase --onto master new_background_processing export_background_processing

那没有达到我想要的效果,所以我进行了重置:

git reset --hard HEAD@{1}

我把分支恢复到原来的状态,但是当我输入git status时收到了以下消息:

# You are currently rebasing branch 'export_background_processing' on 'e378641'.

如何完全取消该变基?不知道那意味着什么。


16
git rebase --abort
Micha Wiedenmann

6
Git 2.12现在提供了git rebase --quit。请参阅下面的答案
VonC

Answers:


407

使用git rebase --abort。从官方Linux内核文档中获得git rebase

git rebase --continue | --skip | --abort | --edit-todo

5
以我为例,它git rebase --abort没有用,因为我弄乱了东西。我只有以下错误:error: could not read '.git/rebase-apply/head-name': directory of file does not exist。该git rebase --quit 描述的波纹管解决我的问题。
肯特

84

如果您以前没有适当地放弃基准,现在(Git 2.12,2017年第一季度) git rebase --quit

犯9512177通过(2016年11月12日)阮泰玉维战(pclouds(通过合并JUNIOÇ滨野- gitster-提交06cd5a1 12月19日2016)

rebase:添加--quit到清理基准,保持所有其他内容不变

还有,当你决定中止进行中的底垫,并移动到别的做些什么场合,但你忘了做“ git rebase --abort”第一或者,改库已经进行了很长时间,您忘记了它。到您意识到(例如通过启动另一个变基)时,现在已经来不及追踪您的步骤了。解决方法通常是

rm -r .git/<some rebase dir>

并继续您的生活。
但是可能有两个不同的目录<some rebase dir>(显然,它需要一些有关变基的工作原理的知识),.git如果您不在top-dir或链接的工作树中,则“ ”部分可能会更长。而“ rm -r”这样做非常危险.git,那里的错误可能会破坏对象数据库或其他重要数据。

git rebase --quit为此用例提供“ ”,以模仿“ git cherry-pick --quit” 的先例。


在Git 2.27(2020年第2季度)之前,由“ git merge --autostash” 创建的用于保持初始脏状态的存储条目在“ ”上被错误地丢弃git rebase --quit,已更正。

参见Denton Liu()的commit 9b2df3e(2020年4月28日(由Junio C Hamano合并--3afdeef提交中,2020年4月29日)Denton-L
gitster

rebase:保存autostash进入stash reflog--quit

签字人:刘丹顿

a03b55530a(“ merge:教导--autostash选项”,2020-04-07,Git v2.27.0- 合并批处理#5中)中,--autostash引入了该选项git merge

(请参阅“是否可以git pull自动隐藏和弹出未完成的更改? ”。)

值得注意的是,当在git merge --quit存在自动存储条目的情况下运行时,它将保存到存储引用日志中。

这与自动git rebase --quit存储项只是简单地退出存在的当前行为相反。

采用git merge --quitin 的行为,git rebase --quit并将autostash条目保存到stash reflog中,而不仅仅是删除它。


3
这对于避免在a之上进行更改时重置工作目录的副作用非常有用git rebase,而不是像我刚才:P那样丢失它们。
好战的黑猩猩

12

您很幸运尚未完成变基,因此您仍然可以做git rebase --abort。如果您完成了变基(它重写了history),那么事情将会更加复杂。在执行潜在的破坏性操作(尤其是历史记录重写)之前,请考虑对分支的提示进行标记,这样,如果发生问题,您可以倒带。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.