首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何退出重基,但不检查原来的分支?

如何退出重基,但不检查原来的分支?
EN

Stack Overflow用户
提问于 2016-12-02 07:14:19
回答 1查看 149关注 0票数 0

--abort选项git rebase的描述如下:

中止并签出原始分支。

如何在不签出原始分支的情况下中止重基?e 213(此处的“原始”分支实际上是为重基指定的主题分支)。

典型的用例:

  1. 我从master结帐开始: (头,主人)\o-A
  2. 我输入git rebase master A,将A重新定位到master上。
  3. 我要么有一大堆冲突,要么没有时间去工作,于是我决定把A放回去,把它留到另一天。
  4. 本质上,我想中止并返回到原来的位置(即master)。但是,我想在不需要在A转储中间一步的情况下这样做,因为它非常遥远,很多文件已经改变了,而且我不想重新启动或对IDE和其他工具做一些事情,这些工具的自动刷新和自动生成功能会造成各种不愉快的事情。
EN

回答 1

Stack Overflow用户

发布于 2016-12-02 16:43:29

您不能这样做,您只能使用git rebase --abort,这将使HEAD设置为指向分支A,而A指向与前面相同的旧提示提交。这是因为git rebase实际上是在实际启动真正的重基过程之前执行git checkout A,然后忘记了您曾经在其他任何地方。

此外,这一点:

本质上,我想中止并返回到原来的位置(即master)。但是,我想在不需要在A转储中间一步的情况下这样做,因为它非常遥远,很多文件已经改变了,而且我不想重新启动或对IDE和其他工具做一些事情,这些工具的自动刷新和自动生成功能会造成各种不愉快的事情。

..。不幸的是,它已经完全被吹出水面,因为git rebase通过检查其他分支并提交来工作。(它过去经常查看您给出的分支名称参数,不过现在它有点复杂了。)重基过程的工作方式是将头分离到--onto目标(如果不给--onto,则为上游),然后对要复制的每个提交执行一系列git cherry-pick操作。

每一步都会对工作树和索引造成很大的影响,因为签出、樱桃挑选和合并机制都使用这些机制。这意味着无论重基是否完成,您的工作树和索引都可能与您开始时的方式完全不同。

考虑到目标是克服IDE的不良行为,让它工作的诀窍是在一个单独的工作树中进行重基。独立的工作树(显然)与IDE的工作树是分离的,并且也有自己的独立索引。无论重基是否工作,您的IDE都会很高兴地不知道它,因此不会受到它的干扰。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40926727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档