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

11 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
Run Code Online (Sandbox Code Playgroud)

需要规则的所有文件都在根级别加上.cache /文件夹上的所有内容.当我这样做时git merge GCE-Site,所有文件仍然在我不想要的时候合并到主服务器中.

有什么我想念的吗?非常感谢您的帮助.日Thnx

小智 9

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

  • 我相信如果可以快进执行合并,这将不起作用。 (2认同)

Von*_*onC 5

如“ .gitattributes & 文件的单独合并策略” 中所述:

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

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

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

但是在您的情况下,对于具有不同设置的文件,我建议不要使用合并驱动程序,而是使用内容过滤器驱动程序,如“在分支中保留设置

内容过滤驱动

这使您可以保持版本控制:

  • 文件cache/夹中设置的模板文件
  • 一个能够获取模板文件并根据签出的分支用正确的值替换值占位符的脚本。