我有以下目录结构:
project/
.git/
...
app/
...
config/
initializers/
braintree.rb
environments/
production.rb
.gitattributes
我的项目使用两个主要分支,即主分区和分段,每个分支跟踪不同的远程(生产和暂存heroku应用程序)。
我们的想法是,登台分支向前推进新功能,在登台遥控器上推送并测试,然后快速转发主控以匹配暂存并推送到生产遥控器。
这就是我想要做的事情:自由合并这两个分支,同时保持braintree.rb
和production.rb
的版本分开。
为了实现这一点,我在.gitattributes
中放置了这些内容(根据ProGit书):
config/initializers/braintree.rb merge=ours
config/environments/production.rb merge=ours
该文件存在于两个分支中。
我遇到的问题是,这似乎对任何事情都没有任何影响。每当我在两者之间合并时,文件都会被更改,我必须再次更改它们。
我有一种感觉,我错过了一些非常明显的东西,但到目前为止它正在逃避我。我知道其他答案涉及创建自定义合并驱动程序,但ProGit书中没有提及此过程,似乎暗示ours
驱动程序是内置的(我在手册页中看到过它,所以我相对肯定它是)。我能想到的唯一另一件事就是我以某种方式将.gitattributes
置于错误的位置或搞砸了其中的内容,但我找不到相关信息。我已经尝试将它移动到与文件相同的目录,但无济于事。
如果它有任何帮助,我在OS X上运行git版本1.7.2。任何帮助都将非常感谢。
答案 0 :(得分:3)
有两个出色的Stack Overflow响应可以解决这个问题:
How do I tell git to always select my local version for conflicted merges on a specific file?
和
.gitattributes & individual merge strategy for a file
我建议您阅读第一个链接中的最佳答案。它很长,但非常详细和内容丰富。