合并分支时忽略文件

时间:2017-01-28 01:56:24

标签: git merge

当我合并分支时,我试图忽略每个分支之间的web.config,因为每个分支在web.config中具有不同的配置。

某种原因,它不起作用 我错过了什么吗?

这是我到目前为止所拥有的。

.gitattributes

* text=auto
Web.config merge=ours

文件结构

 .gitignore
 .gitattributes
 project
 |____directory
 |____directory2
      |_____Web.config

我还将merge.ours.driver设置为true:

git config --global merge.ours.driver true

2 个答案:

答案 0 :(得分:1)

你几乎在那里,你遗漏了一些小东西 - 标记你想忽略的完全文件。你有大写字母,或者它的权利和嵌套应该是**/web.config

echo 'web.config merge=ours' >> .gitattributes
echo '**/web.config merge=ours' >> .gitattributes

这样做,它会起作用。

答案 1 :(得分:1)

  

今天我添加了一些新文件并更改了一些文件但是当我在本地合并时,这不起作用。

merge=ours merge=ours仅适用于发生冲突的特定文件。如果仅在一个分支中更改文件,然后合并该分支,则不存在冲突(即,没有并发修改)。

换句话说,web.config.master 是您案例的正确解决方案(无论您是否使用Visual Studio 2015)。

我宁愿:

  • 每个分支都有一个单独的文件(web.config.mybranchweb.config,...),您可以根据需要修改每个文件
  • 声明 merge strategy (使用content filter driver),在结帐时会自动将正确的文件复制为web.config
    smudge复制的文件将被忽略并保密。

.gitattributes declaration

您的branch=$(git rev-parse --symbolic --abbrev-ref HEAD) 脚本可以通过以下方式确定已签出分支的名称:

{{1}}