我有以下目录结构:
project/
.git/
...
app/
...
config/
initializers/
braintree.rb
environments/
production.rb
.gitattributes
我的项目使用两个主要分支,master和staging,每个分支都跟踪一个不同的远程(生产和staging heroku应用程序)。
这个想法是,登台分支向前移动新特性,它们被推送到登台远程并在登台远程上进行测试,然后master被快速转发到匹配登台并推送到生产远程。
这是我想做的:自由合并这两个分支,同时保持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,任何帮助将非常感激。
有两个很好的堆栈溢出响应来解决这个问题:
我如何告诉git总是选择我的本地版本的冲突合并在一个特定的文件?
和
。gitattributes,单个文件的合并策略
我建议通读第一个链接中的顶部答案。