git 变基错误 ("could not apply...")

Error with git rebase ("could not apply...")

我是 GitHub 存储库 https://github.com/plison/opendial 的管理员。我想减少存储库上的提交数量,因为存储库已经有几千次提交,其中许多是可以很容易地压缩在一起的小调试更改(尤其是几年前的)。

因此,我正在尝试应用变基以将我的部分提交压缩在一起。但是,我遇到了以下问题:

  1. 当我输入例如git rebase -i HEAD~10,我在交互式编辑器中得到了相当多的提交行(远远超过 10 行)。可能是什么原因?
  2. 更重要的是,一旦我关闭交互式编辑器开始变基,我系统地收到错误消息“错误:无法应用',即使我没有对提交进行任何更改(即,如果我将所有行保留为 'pick',无需任何修改或重新排序)。

我该如何解决这些问题?应该注意的是,存储库是从以前托管在 Google 代码上的 (SVN) 存储库自动导入的。到目前为止,转换似乎运行良好,但我想知道为什么在尝试重新设置我的提交时会出现这些错误。

你的项目历史似乎包含最近的一些合并提交(大概是你做的)。在您想要交互变基的内容中存在合并提交通常会导致问题。 (交互式 rebase 几乎假定线性历史,但合并提交不是线性的。)

您的项目历史似乎也有 两个 平行历史,它们在提交 11b3653 中合并在一起(使用 gitktig 之类的工具来看到这个,它在 Github 的网络界面上没有很好地显示)。

我建议您首先尝试展平您的历史以摆脱平行历史,并删除合并提交。然后,一旦您拥有严格线性的历史记录,您就可以着手重写历史记录以消除所有调试流失。

提醒自己如何解决这个问题:

错误消息信息量不大。如果您输入

git rebase --continue

您意识到错误是由于 git 无法自行解决的合并冲突,需要您的帮助。

要查看哪些文件有冲突,请键入

git status

解决你喜欢的合并冲突editor/IDE(提示:这应该以i开头,以ntelliJ结尾)

标记分辨率
git add .

如果所有冲突都已解决,您应该会看到如下内容:

(all conflicts fixed: run "git rebase --continue")

所以继续你的变基

git rebase --continue

希望你的 rebase 现在应该成功了

git status

显示:

On branch feature/DIG-19302-Upgrade-mockito-v2
Your branch is behind 'origin/feature/your-feature-branch' by 2 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)

nothing to commit, working directory clean

不要git拉。如果这样做,您只会覆盖您的合并冲突。而是将您的合并冲突解决方案推送到分支)与

git push --force

大功告成!您的 git 日志现在应该只显示 1 个提交(这是您刚刚执行的强制更新)