Как обрабатывать двоичные файлы, например, файлы.mo
Есть ли простой способ обработки двоичных файлов в операциях git? Я думаю, что мой идеал в этом случае - "объединение" файлов.mo (двоичные сообщения.po) - это отдавать приоритет более новому файлу, копируя его поверх старого.
Так я могу настроить git, чтобы сделать это, или это всегда будет ручное упражнение?
3 ответа
Вы можете добавить пользовательский драйвер слияния в файл gitattributes (см. Этот вопрос SO), только для *.mo
файлы и только в соответствующих каталогах.
echo *.mo merge=keepTheir > dirWithMoFiles\.gitattributes
git config merge.keepTheir.name "always keep theirduring merge"
git config merge.keepTheir.driver "keepTheir.sh %O %A %B"
С keepTheir.sh
как:
mv -f $3 $2
exit 0
Что ж, лучшая идея - не держать сгенерированные файлы (такие как.mo файлы) под контролем версий.
Если вы все еще хотите, чтобы они были в Git, используйте стандартные способы разрешения конфликтов.
Например, вы можете получить любую версию конфликтующего файла:
git checkout --theirs -- dir/file.mo
git checkout --ours -- dir/file.mo
Или использовать git mergetool
который предоставит вам обе версии конфликтующего файла.
В основном, эта концепция была хорошо объяснена здесь. Как мне сказать git всегда выбирать мою локальную версию для конфликтующих слияний в конкретном файле?
и вот скрипт bash, упрощающий описанные там шаги https://github.com/equivalent/git_to_svn_behavior-
(шаги, как запустить в Readme)