当重新分支的分支有太多提交时,我遇到了制作简单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
是否对它可以处理的提交数量有某种上限?这是一个已知的错误?
答案 0 :(得分:2)
有没有办法解决这次崩溃?
当然,修复Git中的错误。 (您说您对解决方法不感兴趣,但这似乎来自于--whitespace=fix
作为命令行参数,或者在您的配置中设置apply.whitespace=fix
。消除它可能会回避问题。)
git rebase是否对它可以处理的提交数量有某种上限?
没有
这是一个已知的错误吗?
嗯,现在是。 :-)如果没有一个好的复制器,我不确定是否有人 else 可以修复它。 (所以这可能取决于你所知道的“已知错误”:你的例子表明空白修复代码中存在一个错误,但目前还不清楚错误是什么。)