git rebase - 只在长树枝上崩溃

时间:2017-11-13 15:16:09

标签: git crash rebase

当重新分支的分支有太多提交时,我遇到了制作简单git rebase(不涉及冲突)的问题。我无法在谷歌上找到类似的stackoverflow错误。

我发现问题是尝试使用71次提交来修改一个长分支(真的吗?):

$ git clone git@myrepo.com/project.git
$ cd project
$ git checkout develop
$ vim README.md # just a simple text update on tracked file
$ git add README.md
$ git commit -m "crash test"
$ git checkout feature/branch-to-be-rebased
$ git rebase --onto develop feature/big-branch-to-be-rebased~71

First, rewinding head to replay your work on top of it...
Applying: commit 01
Applying: commit 02
Applying: commit 03
...
Applying: commit 20
Assertion failed: (postlen ? fixed_preimage.nr == preimage->nr : fixed_preimage.nr <= preimage->nr), function update_pre_post_images, file apply.c, line 2322.
/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core/git-rebase--am: line 16: 44878 Abort trap: 6           git am $git_am_opt --rebasing --resolvemsg="$resolvemsg" ${gpg_sign_opt:+"$gpg_sign_opt"} < "$GIT_DIR/rebased-patches"
当分支很短时,

git rebase正常工作(它在8个提交分支上工作)。

我的操作系统是Sierra 10.12.6

$ git --version
git version 2.13.6 (Apple Git-96)

使用最新brew的git版本也发生了同样的事情:

$ /usr/local/Cellar/git/2.15.0/bin/git --version
git version 2.15.0

我知道有些人会对git工作流程有不同的看法,但这个问题的重点纯粹是技术性的。所以我对壁球,樱桃挑选等等的变通办法不感兴趣。

有没有办法解决这次崩溃? git rebase是否对它可以处理的提交数量有某种上限?这是一个已知的错误?

1 个答案:

答案 0 :(得分:2)

  

有没有办法解决这次崩溃?

当然,修复Git中的错误。 (您说您对解决方法不感兴趣,但这似乎来自于--whitespace=fix作为命令行参数,或者在您的配置中设置apply.whitespace=fix。消除它可能会回避问题。)

  

git rebase是否对它可以处理的提交数量有某种上限?

没有

  

这是一个已知的错误吗?

嗯,现在是。 :-)如果没有一个好的复制器,我不确定是否有人 else 可以修复它。 (所以这可能取决于你所知道的“已知错误”:你的例子表明空白修复代码中存在一个错误,但目前还不清楚错误是什么。)