Есть ли простой способ обработки двоичных файлов в операциях git? Я думаю, что мой идеал в этом случае - "слияние".mo файлов (двоичных сообщений .po) - должен был бы отдать предпочтение более новому файлу, скопировав его поверх верхней части.
Итак, могу ли я настроить git для этого или всегда будет ручным упражнением?
Ответ 1
Вы можете добавить специальный файл слияния в файл 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
Ответ 2
Ну, лучшая идея заключается не в том, чтобы сгенерировать файлы (такие как .mo файлы) под контролем версий.
Если вы все еще хотите иметь их в Git, используйте стандартные способы разрешения конфликтов.
Например, вы можете получить любую версию конфликтующего файла:
git checkout --theirs -- dir/file.mo
git checkout --ours -- dir/file.mo
Или используйте git mergetool
, который предоставит вам обе версии конфликтующего файла.
Ответ 3
В принципе эта концепция была хорошо объяснена здесь Как сообщить git всегда выбирать локальную версию для конфликтующих слияний в определенном файле?
и здесь bash script, упрощающий описанные здесь шаги
https://github.com/equivalent/git_to_svn_behavior-
(шаги для запуска в Readme)