Как обрабатывать двоичные файлы, например, файлы.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)

Другие вопросы по тегам