.gitattributes 的替代品



我一直在寻找一种在不覆盖图像和css文件夹的情况下将一个分支合并到另一个分支中的方法。我环顾SO,发现一些提到.gitattribute的问题和答案。

我还查看了官方文档。

但是我一定错过了一些东西,因为每次我尝试进行合并(在我替换图像的两个分支之间(时,我都会发生合并冲突。

作为参考,这是我的 .gitattributes 文件,包含在两个分支中:

/res/icon/                 merge=ours
/res/screen/               merge=ours
/platforms/                merge=ours
/www/assets/css/           merge=ours
/www/background_splash.png merge=ours
/www/bglogin.png           merge=ours
/www/top_bar.png           merge=ours

我在这里错过了什么吗?谢谢。

另外,我还有其他选择来实现这一点吗?

如果您希望res/icon中的所有文件,则需要:

/res/icon/*                merge=ours

(如果没有子目录(或:

/res/icon/**/*             merge=ours

(如果有子目录(。 对所有目录重复此模式。

但请注意,有一个缺陷:只有当有要组合的内容时,才会使用ours合并驱动程序。 也就是说,假设有一个名为res/icon/foo.img的文件。 在合并基提交中,这是字母 B 的图像。在您的分支中,这仍然是字母 B 的图像,与原始文件一字不差。 在他们的分支中,这是一个不同的图像,或者不同的颜色,或者其他什么,所以文件不是逐位相同的。

运行git merge theirs,您的 Git 会将res/icon/foo.img中的基本 B 与您的 B 进行比较,看到它们是相同的,将基本 B 与它们的映像进行比较,看到它们不同,然后选择它们的文件,因为没有什么可以解决的。

如果您确实以任何方式更改了文件,Git 会将基本res/icon/foo.imgB 与res/icon/foo.img文件进行比较(也许您的 B 现在是不同的颜色(。 Git 将基本 B 与其文件进行比较。 你和他们都有变化,所以有不同的变化可以组合。 现在 Git 将使用您的merge=ours驱动程序来实现组合。

(Git 可能应该有一个标志,"必须始终使用合并驱动程序"或类似的东西,以强制它使用您的驱动程序,即使 Git 认为没有要合并的更改。 但是 Git 今天没有这样的标志。

相关内容

  • 没有找到相关文章

最新更新