ошибка: невозможно перезаписать несколько значений одним значением - PullRequest
0 голосов
/ 09 мая 2018

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

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

Так что я хочу изменить на kdiff3 на p4merge, Здесь также я получаю сообщение об ошибке типа

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

enter image description here

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

1 Ответ

0 голосов
/ 14 мая 2018

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

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

git mergetool --tool=p4merge

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

git mergetool --tool-help

Edit: Эта команда работает, только если вы правильно указали путь к инструменту. В противном случае вы всегда получите 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 показывает путь) или сохраните в другом месте внутри редактора.

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 лучше для понимания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...