我有一个带有两个git分支(开发和生产)的Web项目,每个分支都连接到不同的服务器(dev和prod)。每个分支都有一组跟踪的配置文件,例如不同的URL,数据库选项,sql导出的文件等,它们在两个分支上都是不同的。
每当我尝试合并这些分支时,我会在这些设置文件中遇到很多冲突,这些冲突需要手动解决,但我时不时会错过一些东西。简而言之,这是一场噩梦。因此,我的问题是,如何避免这种情况?
建议的解决方案: “尝试使这些文件无法跟踪”。我试过这个但是每当我从生产文件中删除时,我都会删除并替换这些文件,所以我不知道是否应该以不同的方式执行此操作。
答案 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
中所有其他设置的正确处理。