gitattributesはマージドライバを正しく設定しない

私は次のディレクトリ構造を持っています:

project/
    .git/
        ...
    app/
        ...
    config/
        initializers/
            braintree.rb
        environments/
            production.rb
    .gitattributes

私のプロジェクトでは、マスタとステージングという2つの主要なブランチを使い、それぞれ異なるリモート(生産とステージングのヒーローアプリ)を追跡しています。

つまり、ステージングブランチが新しい機能で前進し、ステージングリモートにプッシュされ、テストされます。マスターはステージングに合わせて早送りされ、プロダクションリモートにプッシュされます。

ここでは私がしたいことがあります: braintree.rb production.rb のバージョンを分けてこれらの2つのブランチを自由にマージします。

これを達成するために、私が .gitattributes (ProGitの本のとおり)に入れたものを次に示します。

config/initializers/braintree.rb merge=ours
config/environments/production.rb merge=ours

ファイルは両方のブランチに存在します。

私が遭遇している問題は、これは何にも何の影響も与えないようだということです。私が2つのファイルをマージするたびに、ファイルはとにかく変更され、私はそれらを再び変更する必要があります。

私は何かひどく明白なものを見逃していると感じていますが、これまでのところ私は逃げ出しています。私はここで他の答えはカスタムマージドライバを作ることに関係していることを知っていますが、ProGitの本はこのプロセスについて言及しておらず、 ours ドライバが組み込まれているマニュアルページなので、私はそれが比較的確信している)。私が考えることができる唯一のもう一つのことは、どういうわけか .gitattributes を間違った場所に置いたり、その内容を混乱させてしまったことです。私はファイルと同じディレクトリに移動しようとしましたが、役に立たないものです。

場合は、任意のヘルプは、私はgitのバージョンは、OS Xで1.7.2を実行しています。どんな助けも大歓迎です。

7
私はこの質問に対する答えを見ることに非常に興味があります。私はほとんど同じ問題を抱えています。
追加された 著者 ulmangt,

1 答え

この問題に対処する2つの優れたスタックオーバーフロー応答があります。

特定のファイルの矛盾したマージのためにローカルバージョンを常に選択するようにgitに指示するにはどうすればよいですか?

そして

.gitattributes & individual merge strategy for a file

I'd suggest reading through the top answer in the first link. It's long, but very detailed そして informative.

2
追加された