如何处理二进制文件的 Git 提交,例如 .mo 文件

3
有没有一种简单的方式来处理git操作中的二进制文件?我想在这种情况下,我的理想是“合并” .mo文件(二进制 .po消息),将优先权赋予较新的文件,将其复制到旧文件的顶部。因此,我是否可以配置git来执行此操作,还是它总是需要手动进行?
3个回答

4
您可以在gitattributes文件中添加一个自定义合并驱动程序(请参见此SO问题),仅适用于*.mo文件,并且仅适用于相关目录。请注意保留HTML标记。
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

这看起来是一个有趣的可能性。等我完成现在正在做的事情后,我会稍后调查一下。 - Leo

0

最好的做法是不要将生成的文件(例如.mo文件)纳入版本控制。

如果您仍希望将它们放在Git中,请使用标准方法解决冲突。

例如,您可以获取冲突文件的任一版本:

git checkout --theirs -- dir/file.mo
git checkout --ours -- dir/file.mo

或者使用 git mergetool,它将为您提供冲突文件的两个版本。


不是我想要的 - 每天早上我都会将我的更改与同事的合并。如果他添加或重新定义了消息,我希望能够在不必在本地重新生成mo文件的情况下获取它们。当然,如果我们都进行了消息更改,那么我就必须重新生成,但这种情况发生的频率就像日食一样少。我想要的是让git在不询问任何问题的情况下复制最新的文件 - 一种盲目复制而不是忽略指令。 - Leo
但是如果只有一个人更改了消息,就不应该有任何冲突。 - Michal Čihař

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接