git - 使用`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,并进行合并)
即使我没有对 todo 进行任何更改,我也会收到上述错误。
我做错了什么,还是一个 git bug?看起来 git 对 Bors 自动生成的提交消息感到窒息(Rust 团队使用机器人来进行汇总合并等)。
我在 Debian 10 上使用 git-2.20.1。
解决方案
Git 2.25 中修复了一个错误--rebase-merges
:
- 由“git rebase --rebase-merges”生成的待办事项列表中使用的标签用作引用名称的一部分;提出标签的逻辑已被收紧,以避免无法使用的名称。
除了该错误之外,还有一个相关的错误:
- 避免“git rebase --rebase-merges”生成重复标签名称的逻辑忘记了机器本身使用“onto”作为标签名称,自动生成的标签必须避免这种情况,已更正。
(这两个都来自 Git 2.25发行说明。)
如果您将 Git 升级到 2.25 版,问题应该会消失。在那之前,我最好的建议是“不要使用--rebase-merges
”。
推荐阅读
- python - 为超级账本 indy 设置运行 python 代理时没有名为“python_agent_utils”的模块
- r - 根据其他列的内容汇总列
- ionic-framework - Inoic : 离子头像不显示
- windows-installer - 如何获取 msi 文件中的所有属性
- angular - 在 Angular 中翻译 datetimepicker
- ubuntu-18.04 - Arduino IDE 无法上传 Sketch(Ubuntu 18.04 LTS)
- django - 如何在 Wagtail Draftail Editor 中更改 H 元素的类
- java - KrbException: S4U2self 需要一个 FORWARDABLE 票
- javascript - 制表符 colspan 或空白表的默认消息?
- kotlin - 是否有与 RxJava 的 onDispose 等效的 Kotlin Coroutines Channel?