替代.gitattributes

问题描述 投票:0回答:1

我一直在寻找一种方法将分支合并到另一个分支而不覆盖image&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

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

另外,我还有另一种选择吗?

git git-merge gitattributes
1个回答
1
投票

如果你想要res/icon中的所有文件,你需要:

/res/icon/*                merge=ours

(如果没有子目录)或:

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

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

但请注意,有一个缺陷:ours合并驱动程序仅在有东西要合并时使用。也就是说,假设有一个名为res/icon/foo.img的文件。在合并基础提交中,这是Base的字母B的图像。在你的分支中,这仍然是字母B的图像,与原始文件一点一点地相同。在它们的分支中,这是一个不同的图像,或不同的颜色,或其他什么,因此文件不是逐位相同的。

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

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

(Git可能应该有一个标志,“必须始终使用合并驱动程序”或其他类似的,强制它使用你的驱动程序,即使Git认为没有组合的变化。但是Git今天没有这样的标志。)

© www.soinside.com 2019 - 2024. All rights reserved.