是否可以 git 隐藏正在进行的交互式变基?

Is it possible to git stash an interactive rebase in progress?

我目前正在将 origin/master 变基到 origin/master 前一段时间创建的分支,而在该分支上工作的开发人员现在不可用。

我已经解决了功能分支第一次提交时的一些冲突,但到了必须等待开发人员知道如何完成变基的地步。

有没有办法保留我已经解决的冲突(约 30 分钟),以便我可以继续执行另一项任务?

git stash 所做的就是提交。 (好吧,两次提交,但这并不重要。提交 git stashno 分支上,并且结构很奇怪,但关键是它进行提交。那是因为提交是在 Git 中保存文件的方式。甚至 Git 的 git notes 也是提交!像隐藏一样,它们不在分支上,但它们确实保存文件,所以它们是提交。)

如果您可以使用 git stash 进行提交,则可以使用 git commit 进行提交。

如果没有——如果你还没有完成合并冲突的解决——你基本上就卡住了。您必须 解决所有冲突才能提交。有关更多信息,请参阅

请注意,如果您有足够新的 Git 来拥有 git worktree add,您可以设置多个 work-trees,每个都在不同的分支上。每个 work-tree 都有 自己的索引 (请参阅其他问题和答案以了解为什么这很重要),因此可以在 in-progress 中留下合并冲突的变基"the" 索引并切换到另一个 work-tree 中的另一个分支并执行普通工作。换句话说,"the" 索引现在是每个 work-tree 索引,所以合并冲突发生在 "the" 索引 "locks up" 那个 work-tree 中,但不是其他人。

以后你可以用rerere,记录你的决心。这不会立即让你回到 30 分钟的变基,但它应该有很大帮助,基本上你只是确认你的决议到你停止的地方。不知道为什么rerere不标配Git,太好用了

另一个脑残的简单解决方案是简单地复制包含 git 存储库的整个文件夹,mid-rebase。这应该始终有效。完成后删除该文件夹可能是个好主意(重新定位和推送)。

或者另一个想法是提交并创建一个分支 mid-rebase,然后 git cherry-pick 稍后将剩余的 un-rebased 提交提交到它上面。