"отказ от обновления ссылки с плохим именем" при использовании `git rebase --rebase-merges` - PullRequest
1 голос
/ 13 февраля 2020

Мне недавно пришлось взглянуть на git rebase --rebase-merges, но мне не очень повезло.

Я поддерживаю форк компилятора Rust, и я недавно слился с апстримом, исправляя тонна конфликтов слияния по пути. Затем мне пришлось сделать второе слияние, так как мне не повезло, и репо с вышестоящим репо был разорван во время первого слияния.

Я надеялся использовать git rebase -i --rebase-merges, чтобы взять в квадрат sh мои два слияния вместе, но сохраняя вложенные слияния, созданные в восходящем потоке (если это вообще возможно).

Проблема в том, что, что бы я ни пытался, я получаю это сообщение об ошибке:

$ 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 - я перебираюсь на дерево перед тем, как моя ветвь слилась)

Я получаю вышеуказанную ошибку , даже когда я не изменяю todo .

Я что-то не так делаю, или это git ошибка? Похоже, git задыхается от сообщения коммита, автоматически сгенерированного Bors (бот, используемый командой Rust для объединения объединений и т. П.).

Я использую git -2.20.1 в Debian 10.

1 Ответ

3 голосов
/ 13 февраля 2020

В --rebase-merges была ошибка, исправленная в Git 2.25:

  • Метка, используемая в списке задач, сгенерированная "git rebase - rebase-merges "используется как часть refname; логика c для создания метки была ужесточена, чтобы избежать имен, которые нельзя использовать как таковые.

Наряду с этой ошибкой был связан:

  • Лог c, чтобы избежать повторяющихся имен меток, сгенерированных «git rebase --rebase-merges», забыл, что само устройство использует «на» в качестве имени метки, чего следует избегать авто сгенерированные ярлыки, которые были исправлены.

(оба из Git 2.25 примечаний к выпуску .)

Если вы Обновите ваш Git до версии 2.25, проблема должна исчезнуть go. До тех пор, лучший совет, который я имею, - не используйте --rebase-merges.

...