28032


たとえば、とあるファイルはログみたいなもので、更新の際には新しい内容をファイルの末尾に追記することによって記述されていくものだとします。

B というブランチと、C
というブランチが、このファイルに対して別々の内容を追記したとします。そして、それぞれのブランチが変更するファイルは、このファイルだけだとします。

これらをマージする際には、この末尾の追記内容に対してエラーが発生しますが、解決方法としては、どちらの追記内容が先に来てもいいから、両方ともの内容が追記された状態にマージしてほしいです。手動でこれを行う場合には問題ないですが、スクリプトで処理するにあたっては、このマージ方法を
git-merge の中で実行してほしいです。

自分の知る限り、これを実現するマージストラテジーは存在していないと思っています。なので、独自ストラテジーでこれを定義できたらいいなと考えました。

質問:

  * git で、独自マージストラテジーを定義するにはどうしたらいいですか？


CC BY-SA 3.0
2016-07-20T05:48:48.880
27748
2016-08-03T02:17:51.997
754
question
git
git で独自マージストラテジーを定義するには？


ちょっとぐぐってみたところ、以下のような記事が引っ掛かりましたが、如何でしょう。(自前での検証はしていません)

Git-mergeの挙動をカスタマイズする  
<https://shogo82148.github.io/blog/2015/12/16/customize-git-merge/>

ご質問の状況については、merge=unionが使えそうに見えます。(「適当」の加減によるかもしれませんが)


CC BY-SA 3.0
2016-08-03T00:26:04.450
28032
2016-08-03T00:26:04.450
4565
27748
answer


@vmi さんの紹介されたリンクの中に書いてありますが、次のことをやればやりたいことができました。

[code]

    echo 'the-file merge=union' > .gitattributes
    
[/code]

gitattributes によって、マージ方法をファイルに対して指定できます。 `merge=union` をやると、マージコンフリクトが起きる場合にも、
diff を和集合的に取り扱うことができます。


CC BY-SA 3.0
2016-08-03T02:17:51.997
28034
2016-08-03T02:17:51.997
754
27748
answer