Как я могу использовать meld (или другой difftool / mergetool) для выборочной интеграции изменений между двумя несвязанными репозиториями (пультами) в git?

Фон

У меня есть частное репо, которое я скопировал из общедоступного (оба размещены на github). Мне нужно выборочно объединять изменения из общедоступного репо в частное (в отличие от простого выполнения git pull.

Если возможно, я хочу использовать для этой цели инструмент meld, но я открыт для всех жизнеспособных альтернатив.

(дубликат был создан в соответствии с документами Github здесь; добавление второго удаленного 2nd_remote для сравнения двух репозиториев было выполнено в соответствии с ответом iamamac здесь; конфигурация meld была выполнена в соответствии с отличным руководством mattst здесь.)

Для справки, вот моя точная глобальная конфигурация инструмента git:

[merge]
        tool = meld
[diff]
        tool = meld
[difftool "meld"]
        cmd = meld  "$LOCAL" "$REMOTE"
[mergetool "meld"]
# order of $VARS indicates order that panes display
        cmd = meld "$REMOTE" "$MERGED" "$LOCAL" --output "$MERGED"
[mergetool]
# to avoid accumulating cruft
        keepBackup = false
[core]
        trustctime = false

Проблема

Эта настройка хорошо подходит для просмотра различий с: git difftool origin/main 2nd_remote/main Вывод / отображение в объединении соответствует ожиданиям, показывая все различия между указанной ветвью в каждом репо.

Однако, поскольку difftool использует временные файлы, непросто (или очевидно, как) внести и сохранить изменения в meld на основе этих различий.
Что бы я хотел сделать, используя meld's mergetool установка, в которой легко управлять и сохранять изменения.

Однако, когда я вношу тестовое изменение, которое должно вызывать конфликт слияния (скажем, разные дополнения к одной и той же строке в обоих репозиториях), и обновляю пульты, git mergetool origin/main 2nd_remote/main дает : No files need merging

Моя цель

Учитывая описанную выше ситуацию, я думаю, что мне нужно найти одно из следующих решений:

  1. Выясните, как вносить изменения в difftool meld, которые легко сохраняются в «настоящие» файлы вместо временных файлов; ИЛИ
  2. Получите mergetool работать с этой установкой с двумя удаленными устройствами

Но если я лаю совсем не на то дерево и есть другой, лучший способ, я определенно хочу услышать об этом. Любое руководство очень ценится!


person Mister October    schedule 06.04.2021    source источник
comment
Для трехстороннего слияния требуется три входа: базовая версия (от которой расходятся две другие версии), левосторонняя версия и правосторонняя версия (или локальная и удаленная, или наша и Их или как хотите их называть). Вы должны каким-то образом найти базовую версию, чтобы выполнить такое слияние. (Когда два репозитория не связаны, GIt не может найти для вас базовую версию.)   -  person torek    schedule 06.04.2021