如何退出重生但不签出原始分支



--abort git rebase选项的描述读取:

流产和查看原始分支

如何中止一个rebase 检查 oind> onsiment branch?("原始"分支这实际上是指定的主题分支用于rebase。)

典型的用例:

  1. 我从master开始检查:

    o---o---o---o---o---o---o---o---o---o---o---o---o---o (HEAD, master)
         
          o---A
    
  2. i类型git rebase master AA重现为master

  3. 我要么发生冲突,要么没有时间上班,并决定我要把A放回去,然后将其放回另一天。

  4. 本质上,我想流产,然后回到我的位置(即master)。但是,我想在A上倾倒的中间步骤,因为它非常遥远,很多文件已经更改,我不想重新启动或对IDE和其他自动启用的工具做些事情 - refresh和自动构建功能会做各种不愉快的事情。

你不能。您只能git rebase --abort,这将使HEAD设置为A,而A指向与以前相同的旧提示。这是因为git rebase实际上是在git checkout A开始真正启动真正的重列过程之前开始的,然后忘记了您在其他任何地方。

此外,此:

本质上,我想中止并回到我所在的地方(即master)。但是,我想在A上倾倒的中间步骤,因为它非常遥远,很多文件已经更改了,我不想重新启动或对IDE和其他自动的工具做些事情 - refresh和自动构建功能可做各种不愉快的事情。

...不幸的是,已经完全从水中吹出,因为git rebase通过检查其他分支机构和提议。(尽管现在它更复杂,但它实际上是检查了您给它的分支名称参数。)折叠过程可以通过在--onto Target上分离您的头(即上游,如果您没有给出--onto),然后实际上为要复制的每个提交进行一系列git cherry-pick操作。

自结帐,樱桃挑选和合并机制都使用的每一步都在您的工作树和索引上都非常严重。这意味着,无论重新构想是否完成,您的工作树和索引都可能与您启动时的方式完全不同。

鉴于目标是击败IDE的不良行为,因此使这项工作的诀窍是在单独的工作树中进行反弹。单独的工作树(显然)与IDE的工作树分开,并且也有自己的独立索引。不管重新构想是否有效,您的IDE都会不知道它,因此不受干扰。

要获得单独的工作树,如果您的git版本已经足够新,可以使用git worktree add,或者只是在单独的克隆中工作(如果可能的话,本地克隆将通过硬链链接共享大多数存储库数据)。

>

不幸的是,与Git版本2.11一样,rebase没有类似于cherry-pick --quit的选项。

但是,可以手动执行此操作:

$ rm -r .git/rebase-apply
$ git checkout -f

rm -r .git/rebase-apply是为了使git忘记它是在重新构想的中间。这是必需的,或者发生古怪,例如无法启动新的重生。该目录实际上是在Git-Rebase文档中记录的,作为git rebase --abort删除的路径:

要查看原始内容并删除.git/rebase应用程序文件,请改用命令git rebase --abort

我们不能按照此处的建议做到,因为不是"结帐原始"是问题的全部。

git checkout -f用于重置工作树和索引。(即摆脱任何肮脏的文件。)<branch> checkout的参数可以在此处指定,如果一个人想跳到其他地方而不是停留在停止折扣的地方。

最新更新