什么是合适使用.gitattributes与merge =我们的

时间:2014-11-25 18:30:31

标签: git merge attributes bitbucket

我第一次尝试使用.gitattributes。我认为我必须做错事,因为它不起作用,因为我认为使用merge=ours属性的目的是为了(?)。

我的用法示例:

我有两个分支;一个是"主人"另一个是" GCE-Site"。 " GCE-Site"具有不同设置的分支也存在于" master"我不想合并到" master" [或其他分支]。

在两个分支上,我有.gitattributes包含以下规则:

README.md merge=ours
config.php merge=ours
.gitattributes merge=ours
.gitignore merge=ours
.cache/ merge=ours

需要规则的所有文件都在根级别以及.cache /文件夹之上的所有内容。当我执行git merge GCE-Site时,当我不想要时,所有文件仍会合并到主文件中。

我有什么遗失的吗?非常感谢您的帮助。日Thnx

2 个答案:

答案 0 :(得分:9)

一旦我知道自己在做什么就轻松修复:我错过了在我的本地环境中使用git config --global merge.ours.driver true添加合并策略。

答案 1 :(得分:2)

如“.gitattributes & individual merge strategy for a file”中所述:

  

合并驱动程序仅在非平凡情况下调用,即如果master和test都触及设置(并且您需要首先定义合并驱动程序)。

您可以在“How do I tell git to always select my local version for conflicted merges on a specific file?”中看到并发修改(即两个分支中的修改)的示例。

因此,如果您的合并不涉及修改两个分支中cache/文件夹中的相同文件,则永远不会调用您的合并驱动程序。

但是在你的情况下,对于具有不同设置的文件,我建议不使用合并驱动程序,而是使用content filter driver,如“Keep settings in branch

content filter driver

这允许您保持版本控制:

  • cache/文件夹
  • 中设置的模板文件
  • 一个脚本,可以获取模板文件,并使用正确的值替换值占位符,具体取决于签出的分支。