不要在git中合并特定文件

时间:2019-02-02 22:49:42

标签: c# asp.net-mvc git

我想要的
我在Windows中工作,我的项目是asp.net mvc
我有两个分支.Test和Master。
在两个分支,我有config.cs
每个分支都有自己的带有不同数据的config.cs。
我想要config.cs文件,不要包含在合并中。

我的目录

  

-。git
  -.vs
  -MyProject
     --config.cs
  -.gitattributes.txt

我的尝试
我发现此链接: git-scm.com
谁表示使用.gitattributes.txt

我将此行写入.gitattributes.txt
config.cs merge=ours
并运行以下行:
git config --global merge.ours.driver true

但是不工作。
当我将Test分支合并到Master分支时,Test的config.cs将覆盖Master的config.cs。

1 个答案:

答案 0 :(得分:0)

由于您不想合并该文件,因此最好不要完全对其进行版本控制,而生成

那一代人将使用content filter driver通过 .gitattributes declaration

再次:

  • 您根本没有版本config.cs(实际上,请先通过git rm config.cs删除它,然后再提交)
  • 版本 template 文件config.cs.tpl,以及两个文件,每个文件具有每个环境的所有可能值(Testmaster,因此config.cs.test和{ {1}}。

smudge (来自“ Customizing Git - Git Attributes”的图像,来自“ Pro Git book”的图像)

生成的实际文件仍然被config.cs.master忽略:您的实际工作树不会“脏”。

.gitignore脚本:

  • 检测正确的环境(例如使用smudge的分支)
  • 根据在branch=$(git rev-parse --symbolic --abbrev-ref HEAD)期间应用smudge脚本的模板,选择正确的值文件并生成正确的文件。

这样,您可以在开发时随意修改git checkout值文件:config.cs.test文件(未版本化)将根据这些值生成。
但是在config.cs中,对同一存储库的检出将使用master(版本文件)值触发主config.cs文件的生成。