是否可以git存储正在进行的交互式rebase?

时间:2017-01-18 17:35:46

标签: git interactive git-rebase git-stash git-workflow

我目前正在将origin / master重新定位到一段时间之前从origin / master创建的分支上,并且目前无法使用在分支上工作的开发人员。

我已经在功能分支的第一次提交中解决了一些冲突,但是我必须等待开发人员知道如何最终确定rebase。

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

4 个答案:

答案 0 :(得分:3)

git stash所做的就是提交。 (好吧,两次提交,但是在这一点上并不重要。提交git stash使得没有分支,并且构造奇怪,但关键是它提交。这是因为提交是在Git中保存文件的方式。即使是Git的git notes也是提交!就像存储,它们不在分支上,但它们确实保存了文件,所以它们是提交。)

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

如果没有 - 如果你还没有完成合并冲突的解决方案 - 你基本上被卡住了。您必须解决所有冲突才能提交。有关这方面的更多信息,请参阅How can I save a git "rebase in progress"?

请注意,如果您拥有足够新的Git git worktree add,则可以设置多个工作树,每个工作树位于不同的分支上。每个工作树都有自己的索引(请参阅其他问题和答案,了解其重要性),因此可以在&#34中保留包含合并冲突的正在进行的rebase ;所述"索引并切换到另一个工作树中的另一个分支并进行普通工作。换句话说,""" index现在是一个per-work-tree索引,因此合并冲突在"""索引"锁定"那个工作树,但不是任何其他工作树。

答案 1 :(得分:0)

将来,您可以使用rerere,它将记录您的分辨率。这不会立即让你回到30分钟进入篮板,但它应该有很多帮助,基本上你只是确认你的分辨率到你停止的地步。我不知道为什么rerere不是Git的标准,它非常有用。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

或者另一个想法是提交并在mid-rebase中创建一个分支,然后git cherry-pick稍后保留未重新提交的提交。