Как использовать git rerere (или аналогичный) для автоматического разрешения "конфликта слияния субмодуля"?

Я пытаюсь перебазировать ветку B над веткой A, но один из новейших коммитов в A удаляет одну папку, заменяя ее подмодулем git.

После запуска git rebase Agit останавливается на каждом коммите B (около 200) с просьбой разрешить конфликты. Тогда я бегу git mergetool и я получаю:

Submodule merge conflict for 'isolate':
  {local}: submodule commit 0b28bb5dc58c86f38729a6f06c235bc564033556
  {remote}: deleted
Use (l)ocal or (r)emote, or (a)bort?

Я попытался включить git rerere, запустив git config --global rerere.enabled 1 и я позвонил git rerere после "разрешения" (просто набрав L).

Проблема в том, что, глядя в .git/rr-cache/ Я вижу, что в этой папке записано одно разрешение, но это почти единственный раз (в более чем 20 разрешениях), когда мне действительно нужно было разрешить конфликт.

Может быть, rerere не записывает этот тип разрешения? Если это так, как я могу это сделать?

1 ответ

Сначала я подумал, что это было бы слишком утомительно:

git mergetool
# type "l", type "enter"
git rebase --continue

но потом я сделал это:

echo "l" | git mergetool && git rebase --continue

и это было намного быстрее, поэтому я просто сделал это для всех коммитов.

Однако, если кто-нибудь найдет его, я все еще заинтересован в лучшем решении:)

Другие вопросы по тегам