error: не может перезаписывать несколько значений одним значением

Я хочу изменить git mergetool kdiff3 на p4merge. потому что я получаю сообщение об ошибке в моей системе Windows, используя kdiff3 mergetool.

/mingw32/libexec/git-core/git-mergetool - lib: строка 128: C:\Program Files\KDiff3\kdiff3: не может выполнить двоичный файл: Exec format error application/config/constants.php кажется неизменным.

Так что я хочу перейти на kdiff3 на p4merge, вот и я получаю ошибку, например

warning: merge.tool имеет несколько ошибок значений: не может перезаписывать несколько значений одним значением. Используйте regexp, --add или -replace-all для изменения merge.tool.

enter image description here

Как я могу решить эту проблему? Либо kdiff3, либо p4merge

Ответ 1

Возможно, ваша установка kdiff3 нарушена, так как она не работает. Или, может быть, вы попытались вручную отредактировать файл конфигурации и испортили его содержимое. Зачем? Поскольку исполняемые файлы Windows имеют расширение .exe в целом. вы можете попробовать изменить конфигурацию снова.

В любом случае, это уже не важно. Это то, что вам нужно использовать, если вы хотите попробовать любой другой инструмент.

git mergetool --tool=p4merge

Возможно, другие уже установлены с вашим git. Вы можете видеть их всех в дополнение к другим.

git mergetool --tool-help

Изменение: эта команда работает, только если вы правильно установили свой путь к инструменту. В противном случае вы всегда получаете No files need merging. Вы уже знаете, как установить путь, но я буду включать сюда для всех, кому это может понадобиться.

Получить список элементов конфигурации:

git config -l

Посмотрите, правильно ли установлены значения, если они есть. затем установите правильное значение или удалите.

git config --unset mergetool.p4merge.path
git config --add mergetool.p4merge.path "c:/somewhere/p4merge.exe"

EDIT: Я предлагаю процесс очистки, поэтому эти дополнительные команды помогут.

первые шаги - сделать резервную копию текущих настроек. Самый простой способ - использовать эти списки, а затем скопировать результаты.

git config --list
git config --global --list

то с помощью этих команд редактирования просто получите путь к файлам конфигурации и создайте резервные копии (vim show path) или сохраните их в другом месте внутри редактора.

git config --edit
git config --global --edit

теперь резервные копии готовы, просто выйдите из редактора. не пытайтесь редактировать вручную, если это действительно не нужно.

git config --unset name
git config --global --unset name
git config --remove-section name
git config --global --remove-section name

merge.tool, mergetool.name, diff.tool и difftool.name. при повторном списке конфигураций вы не должны видеть эти имена. локальные и глобальные должны быть очищены отдельно.

Затем верните те, которые мы только что очистили один за другим. но на этот раз сначала попробуйте их в локальной конфигурации, а затем, если они будут успешно установлены на глобальном уровне.

git config merge.tool name
git config mergetool.name.property value
git config diff.tool name
git config difftool.name.property value

Здесь property - это такие, как cmd и path, а value - их значения, которые вы можете скопировать из своих резервных копий. Теперь самое важное - set only 1 tool за раз.

Последнее, что касается путей. Вы (OP), похоже, используете Linux-подобную среду, поэтому использование / вместо \\ сделает path и cmd лучше понятным.