git - 使用 git 重新构建非线性提交链

标签 git history rebase

我想在向原始存储库发起 pull 请求之前稍微完善一下我的(困惑的)功能分支。我有大约 100 个提交,我想将其 merge 为 3 或 4 个。所有提交都已推送到我自己的远程存储库。由于我想将许多提交保留在我自己的存储库中,因此我在 fork 原始存储库的位置创建了一个新分支。该分支应该包含我的工作的精确副本,但提交较少。

不幸的是,将我当前的 HEAD merge 到新分支并应用 rebase -i 在 merge 提交 (x) 时失败,并告诉我它无法应用修补。假设我的历史如下:

o--o--o--o--o--o-----x
                \     \
                 o--o--o--o--o

有什么想法可以让我通过这个提交吗?

最佳答案

更新

如果您使用的是 Git 2.34.0 或更高版本:使用 --rebase-merges:

git rebase --interactive --rebase-merges

--preserve-merges 不能再使用。


这应该与 git rebase -i -p commit 一起使用,但代价是重做 merge 提交(即重新修复 merge 冲突)。

来自帮助:

-p, --preserve-merges try to recreate merges instead of ignoring them

但是,就您而言,只需解决 merge 冲突并继续 rebase 实际上就可以工作。

关于git - 使用 git 重新构建非线性提交链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29105786/

相关文章:

eclipse - "svn blame"的 GUI,带有历史 slider

git - 将远程分支提示从一个分支移动到另一个分支

git - GitHub自动 merge 后出现 fatal error

c# - Azure 持续部署 - Code First 迁移播种问题 (MVC 5)

command - 是否有键盘快捷键可以浏览 Jupyter 笔记本中的历史记录

reactjs - 如何在 useCallback 中使用全局对象而不将其作为依赖项(删除警告)

git reword 没有再次解决 merge 冲突

git - 为什么我可以 rebase 但我不能在 git 中 merge ?

git - Visual Studio 中的 MS git 提供程序 : where do I set push target?

git - repo 同步特定文件夹