如何防止通过git中的合并更改跟踪的配置文件?

时间:2015-05-08 04:59:43

标签: git repository git-branch

我有一个带有两个git分支(开发和生产)的Web项目,每个分支都连接到不同的服务器(dev和prod)。每个分支都有一组跟踪的配置文件,例如不同的URL,数据库选项,sql导出的文件等,它们在两个分支上都是不同的。

每当我尝试合并这些分支时,我会在这些设置文件中遇到很多冲突,这些冲突需要手动解决,但我时不时会错过一些东西。简而言之,这是一场噩梦。因此,我的问题是,如何避免这种情况?

  • 有没有办法在合并或重新定位时阻止对这些配置文件的任何更改?*

建议的解决方案: “尝试使这些文件无法跟踪”。我试过这个但是每当我从生产文件中删除时,我都会删除并替换这些文件,所以我不知道是否应该以不同的方式执行此操作。

1 个答案:

答案 0 :(得分:2)

执行此操作的方法是将合并策略注册为始终使用当前版本的每个文件属性。以下是如何执行此操作(该想法来自this blog

首先注册合并驱动程序

  • 什么也没做,
  • 成功退出。

shell命令true正是我们正在寻找的。以下行将true注册为 alwaysours 合并驱动程序:

git config --local merge.alwaysours.driver true

接下来,我们需要告诉git使用这个虚假合并驱动程序的文件。这是.gitattributes文件的用途。它支持与.gitignore文件相同的一小组文件模式。例如

/configs/* merge=alwaysours
*.conf merge=alwaysours

将使用我们的虚假合并驱动程序为' / config'中的所有文件或以' .conf'结尾的所有文件。将此文件添加到您的git存储库

也是有意义的
git add .gitattributes

以便跟踪对其的更改。但有一点需要注意:当您在具有.gitattributes文件的分支中合并时,alwaysours驱动程序也将在此分支上使用!以避免由此产生的任何问题,在{em>所有分支上为alwaysours添加.gitattributes合并驱动程序。

echo '/.gitattributes merge=alwaysours' > .gitattributes
git commit .gitattributes -m 'Register alwaysours driver for .gitattributes'

当然,这会破坏.gitattributes中所有其他设置的正确处理。