次のディレクトリ構造があります。
project/
.git/
...
app/
...
config/
initializers/
braintree.rb
environments/
production.rb
.gitattributes
私のプロジェクトでは、master と staging という 2 つのメイン ブランチを使用し、それぞれが異なるリモート (本番およびステージングの heroku アプリ) を追跡します。
アイデアは、ステージング ブランチが新しい機能で前進し、それらがステージング リモートにプッシュされてテストされ、次にマスターがステージングに一致するように早送りされ、本番リモートにプッシュされるというものです。
私がやりたいことは次のとおりです。これらの 2 つのブランチを自由にマージしながら、 と のバージョンを別々に保ちbraintree.rb
ますproduction.rb
。
これを達成するために、ここに私が入れたものがあります.gitattributes
(ProGitの本に従って):
config/initializers/braintree.rb merge=ours
config/environments/production.rb merge=ours
ファイルは両方のブランチに存在します。
私が直面している問題は、これが何にも影響を与えていないように見えることです。2 つをマージするたびに、とにかくファイルが変更され、再度変更する必要があります。
私は恐ろしく明白な何かが欠けていると感じていますが、今のところそれは私を逃れています. ここでの他の回答にはカスタムマージドライバーの作成が含まれていることは知っていますが、ProGitの本ではこのプロセスについて言及されておらず、ours
ドライバーが組み込まれていることを暗示しているようです(そして、マニュアルページで言及されているのを見たので、比較的確実です)。私が考えることができる唯一の他のことは、どういうわけか.gitattributes
間違った場所に入れたか、その内容をめちゃくちゃにしたことですが、それに関する多くの情報を見つけることができません. ファイルと同じディレクトリに移動しようとしましたが、役に立ちませんでした。
参考までに、私は OS X で git バージョン 1.7.2 を実行しています。