"refusing to update ref with bad name" 当使用 `git rebase --rebase-merges`
"refusing to update ref with bad name" when using `git rebase --rebase-merges`
我最近不得不看一下 git rebase --rebase-merges
,但运气不佳。
我维护着一个 Rust 编译器的分支,我最近刚刚合并到上游,解决了沿途的大量合并冲突。然后我不得不进行第二次合并,因为我很不走运,在我进行第一次合并时上游仓库被破坏了。
我希望使用 git rebase -i --rebase-merges
将我的两个合并压缩在一起,但保留上游创建的嵌套合并(如果可能的话)。
问题是,无论我尝试什么,我都会收到此错误消息:
$ git rebase --rebase-merges -i sd-upstream/master
error: refusing to update ref with bad name 'refs/rewritten/Auto-merge-of-#65134---davidtwco:issue-19834-improper-ctypes-in-extern-C-fn,-r=rkruppe'
hint: Could not execute the todo command
hint:
hint: label Auto-merge-of-#65134---davidtwco:issue-19834-improper-ctypes-in-extern-C-fn,-r=rkruppe
hint:
hint: It has been rescheduled; To edit the command before continuing, please
hint: edit the todo list first:
hint:
hint: git rebase --edit-todo
hint: git rebase --continue
(在上面 sd-upstream
是我的组织的上游,而不是 Rust 的——我在我的分支之前对树进行 rebase 并进行合并)
我收到上述错误即使我没有对待办事项做任何更改。
我做错了什么,还是 git 错误?看起来 git 被 Bors(Rust 团队用来执行汇总合并等的机器人)自动生成的提交消息窒息了。
我在 Debian 10 上使用 git-2.20.1。
--rebase-merges
中有一个错误已在 Git 2.25 中修复:
- A label used in the todo list that are generated by "git rebase
--rebase-merges" is used as a part of a refname; the logic to come
up with the label has been tightened to avoid names that cannot be
used as such.
与该错误一起出现的还有一个相关错误:
- The logic to avoid duplicate label names generated by "git rebase
--rebase-merges" forgot that the machinery itself uses "onto" as a
label name, which must be avoided by auto-generated labels, which
has been corrected.
(这两个都来自Git 2.25 release notes.)
如果将 Git 升级到 2.25 版,问题应该会消失。在那之前,我最好的建议是 "don't use --rebase-merges
".
我最近不得不看一下 git rebase --rebase-merges
,但运气不佳。
我维护着一个 Rust 编译器的分支,我最近刚刚合并到上游,解决了沿途的大量合并冲突。然后我不得不进行第二次合并,因为我很不走运,在我进行第一次合并时上游仓库被破坏了。
我希望使用 git rebase -i --rebase-merges
将我的两个合并压缩在一起,但保留上游创建的嵌套合并(如果可能的话)。
问题是,无论我尝试什么,我都会收到此错误消息:
$ git rebase --rebase-merges -i sd-upstream/master
error: refusing to update ref with bad name 'refs/rewritten/Auto-merge-of-#65134---davidtwco:issue-19834-improper-ctypes-in-extern-C-fn,-r=rkruppe'
hint: Could not execute the todo command
hint:
hint: label Auto-merge-of-#65134---davidtwco:issue-19834-improper-ctypes-in-extern-C-fn,-r=rkruppe
hint:
hint: It has been rescheduled; To edit the command before continuing, please
hint: edit the todo list first:
hint:
hint: git rebase --edit-todo
hint: git rebase --continue
(在上面 sd-upstream
是我的组织的上游,而不是 Rust 的——我在我的分支之前对树进行 rebase 并进行合并)
我收到上述错误即使我没有对待办事项做任何更改。
我做错了什么,还是 git 错误?看起来 git 被 Bors(Rust 团队用来执行汇总合并等的机器人)自动生成的提交消息窒息了。
我在 Debian 10 上使用 git-2.20.1。
--rebase-merges
中有一个错误已在 Git 2.25 中修复:
- A label used in the todo list that are generated by "git rebase --rebase-merges" is used as a part of a refname; the logic to come up with the label has been tightened to avoid names that cannot be used as such.
与该错误一起出现的还有一个相关错误:
- The logic to avoid duplicate label names generated by "git rebase --rebase-merges" forgot that the machinery itself uses "onto" as a label name, which must be avoided by auto-generated labels, which has been corrected.
(这两个都来自Git 2.25 release notes.)
如果将 Git 升级到 2.25 版,问题应该会消失。在那之前,我最好的建议是 "don't use --rebase-merges
".