完全取消rebase

Gra*_*son 196 git

我这样做了一个rebase:

git rebase --onto master new_background_processing export_background_processing
Run Code Online (Sandbox Code Playgroud)

这没有做我想要的,所以我执行了重置:

git reset --hard HEAD@{1}
Run Code Online (Sandbox Code Playgroud)

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

# You are currently rebasing branch 'export_background_processing' on 'e378641'.
Run Code Online (Sandbox Code Playgroud)

如何完全取消该rebase?不确定这本身就意味着什么.

小智 325

使用git rebase --abort.从官方Linux内核文档git rebase:

git rebase --continue | --skip | --abort | --edit-todo
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,“git rebase --abort”不起作用,因为我弄乱了一些东西。我只收到以下错误:`错误:无法读取'.git/rebase-apply/head-name':文件目录不存在`。`git rebase --quit` [如下所述](/sf/answers/2895428371/)解决了我的问题。 (15认同)

Von*_*onC 67

如果你没有正确中止过去的rebase,你现在(Git 2.12,2017年第一季度)有 git rebase --quit

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

rebase:添加--quit到清理rebase,保持其他一切不变

在某些情况下,您决定中止正在进行的变革并继续做其他事情,但您忘记先做" git rebase --abort".或者,在你忘记它的情况下,rebase已经进行了很长时间.当你意识到这一点时(例如通过开始另一次变革),回溯你的步骤已经太晚了.解决方案通常是

rm -r .git/<some rebase dir>
Run Code Online (Sandbox Code Playgroud)

并继续你的生活.
但是可能有两个不同的目录<some rebase dir>(并且它显然需要一些关于rebase如何工作的知识),.git如果你不是顶级目录,或者在链接的工作树中," "部分可能会更长.并且" rm -r"非常危险.git,可能会破坏对象数据库或其他重要数据.

git rebase --quit为此用例提供" ",模仿" git cherry-pick --quit" 的先例.

  • 这对于避免在 `git rebase` 上进行更改时重置工作目录的副作用非常有用,而不是像我刚才那样丢失它们:P。 (3认同)

von*_*and 10

你很幸运,你没有完成变基,所以你仍然可以git rebase --abort.如果你已经完成了rebase(它重写了历史记录),事情就会复杂得多.在进行潜在的破坏性操作(特别是历史记录重写)之前,请考虑标记分支的提示,这样就可以在出现问题时进行倒带.


Alm*_*bek 7

如果您要取消的“ Rebasing”“ Already start rebase”,只需注释rebase编辑器中列出的所有提交。(#)

结果,您将收到命令行消息

Nothing to do
Run Code Online (Sandbox Code Playgroud)