Когда я разрешаю разрешение слияния с Kdiff3 (и другим инструментом слияния, который я пытался), я заметил, что при разрешении создается файл *.orig
. Есть ли способ не создавать этот дополнительный файл?
Git mergetool создает нежелательные файлы .orig
Ответ 1
Возможное решение от git config
:
git config --global mergetool.keepBackup false
После выполнения слияния исходный файл с маркерами конфликтов можно сохранить как файл с расширением
.orig
.
Если для этой переменной установлено значениеfalse
, то этот файл не сохраняется.
По умолчаниюtrue
(т.е. Сохранить файлы резервных копий).
Альтернативой является не добавление или игнорирование этих файлов, как предлагается в статье gitguru,
git mergetool
сохраняет версию конфликта слиянием с суффиксом ".orig
".
Обязательно удалите его перед добавлением и фиксацией слияния или добавьте*.orig
к вашему.gitignore
.
Berik предлагает в комментариях использовать:
find . -name \*.orig
find . -name \*.orig -delete
Чарльз Бейли советует в его ответе, чтобы быть в курсе настроек внутренних настроек diff, который также может генерировать эти резервные файлы, независимо от того, какие параметры git.
- kdiff3 имеет свои собственные настройки (см. "" Слияние каталога" в его руководстве).
- Другие инструменты, такие как WinMerge, могут иметь собственное расширение файла резервной копии (WinMerge:
.bak
, как указано в его руководство).
Итак, вам нужно reset те настройки.
Ответ 2
Вы должны быть немного осторожны с использованием kdiff3
, пока git mergetool
может быть настроен на сохранение файла .orig
во время слияния, поведение по умолчанию для kdiff3
также должно сохранять файл резервной копии .orig
независимо от git mergetool
.
Вы должны убедиться, что резервная копия mergetool
отключена:
git config --global mergetool.keepBackup false
а также, что для настроек kdiff3 не создается резервная копия:
Configure/Options => Directory Merge => Backup Files (*.orig)
Ответ 3
Чтобы быть ясным, правильная команда git:
git config --global mergetool.keepBackup false
Оба других ответа имеют опечатки в командной строке, которые могут привести к сбою или неправильной работе.
Ответ 4
Я использую это для очистки всех файлов, заканчивающихся на ".orig":
function git-clean-orig {
git status -su | grep -e"\.orig$" | cut -f2 -d" " | xargs rm -r
}
Если вы scaredy-cat:), вы можете оставить последнюю часть просто, чтобы перечислить их (или оставить -r
, если вы хотите одобрить каждое удаление):
function git-show-orig {
git status -su | grep -e"\.orig$" | cut -f2 -d" "
}
Ответ 5
Возможность сохранить файл .orig можно отключить, настроив KDiff3
Ответ 6
Помимо правильных ответов, предлагаемых в качестве долгосрочных решений, вы можете использовать git для удаления всех ненужных файлов один раз для вас с помощью команды git clean -f
, но сначала используйте git clean --dry-run
, чтобы не произошло ничего непредвиденного.
Это позволяет использовать проверенные встроенные функции git поверх сценариев, специфичных для вашей ОС/оболочки, для удаления файлов.
Ответ 7
Я просто использую команду
git clean -n *.orig
проверить, чтобы убедиться, что только файл, который я хочу удалить, перечислены затем
git clean -f *.orig
Ответ 8
git config --global mergetool.keepBackup false
Это должно работать и для Beyond Compare (как mergetool)
Ответ 9
Окна:
- в файле
Win/Users/HOME/.gitconfig
установитьmergetool.keepTemporaries=false
- в файле
git/libexec/git-core/git-mergetool
, в функцииcleanup_temp_files()
добавьтеrm -rf -- "$MERGED.orig"
в блок else.