有没有一种简单的方法来处理git操作中的二进制文件?在这种情况下,我认为我的理想 - 合并.mo文件(二进制.po消息) - 将优先考虑较新的文件,并将其复制到较旧文件的顶部。如何处理二进制文件的读取,例如.mo文件
那么,我可以配置git来做到这一点,或者它会一直是一个手动练习吗?
有没有一种简单的方法来处理git操作中的二进制文件?在这种情况下,我认为我的理想 - 合并.mo文件(二进制.po消息) - 将优先考虑较新的文件,并将其复制到较旧文件的顶部。如何处理二进制文件的读取,例如.mo文件
那么,我可以配置git来做到这一点,或者它会一直是一个手动练习吗?
你可以在gitattributes file添加定制合并驱动(见本SO question),只为*.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
这将为您冲突的文件的两个版本。
不是我正在寻找的东西 - 每天早上我会将我的更改与我的同事合并。如果他已经添加或(重新)定义的消息,我想要拿起它们而不必在本地重新生成mo文件。当然,如果我们都改变了信息,那么我不得不重新生成信息,但这种情况发生的频率与日食一样多。 我想要的是让git复制最新的文件而不用提问 - 这是一种盲目复制而不是忽略的忽略指令。 – Leo 2010-03-09 12:18:51
但是,如果只有一个更改消息,则根本不应该有任何冲突。 – 2010-03-09 12:40:20
基本上这个概念是很好的解释了这里How do I tell git to always select my local version for conflicted merges on a specific file?
,这里是一个bash脚本简化了步骤中的描述有 https://github.com/equivalent/git_to_svn_behavior-
(步骤如何在自述文件中运行)
您的情况只需编辑_ * _ to * .mo – equivalent8 2011-08-24 17:34:30
这看起来像一个有趣的可能性。当我完成我现在所做的工作后,我会进行调查。 – Leo 2010-03-09 12:57:51