Git mergetool создает нежелательные файлы .orig

Когда я разрешаю разрешение слияния с Kdiff3 (и другим инструментом слияния, который я пытался), я заметил, что при разрешении создается файл *.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

KDiff3 Backup file .orig option

Ответ 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.