对--abort
选项git rebase
的描述如下:
中止并签出原始分支。
如何在不签出原始分支的情况下中止重基?e 213
(此处的“原始”分支实际上是为重基指定的主题分支)。
典型的用例:
master
结帐开始:
(头,主人)\o-Agit rebase master A
,将A
重新定位到master
上。A
放回去,把它留到另一天。master
)。但是,我想在不需要在A
转储中间一步的情况下这样做,因为它非常遥远,很多文件已经改变了,而且我不想重新启动或对IDE和其他工具做一些事情,这些工具的自动刷新和自动生成功能会造成各种不愉快的事情。发布于 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
,或者只需在单独的克隆中工作(如果可能的话,本地克隆将通过硬链接共享大部分存储库数据)。
https://stackoverflow.com/questions/40926727
复制相似问题