8

バイナリ ファイル、swfs、jar、および flv がローカルで変更され、変更を取り込もうとすると、git はそれらをマージしようとし、競合を報告します。

次に、一時的なブランチに分岐し、ローカルで変更されたバイナリ ファイルをコミットし、再帰的な戦略を使用してプル後にそれらをマージします。 - 働き過ぎ。

バイナリファイルをマージしようとせず、これらのバージョンのどれを使用するかを尋ねるのではなく、gitに伝える方法はありますか?

4

1 に答える 1

8

ファイルにマージドライブを設定でき.gitattributesます(特定のサブツリーのみ、一部のファイルタイプのみ)

たとえば、この質問(またはこの質問) を参照してください。

# choose the name of the merge driver to be use for all jar files
echo *.jar merge=keepTheir > dirWithJarFiles\.gitattributes

Git リポジトリの構成でマージ ドライバーを宣言します。

git config merge.keepTheir.name "always keep their during merge"
git config merge.keepTheir.driver "keepTheir.sh %O %A %B"

また

git config merge.keepMine.name "always keep mine during merge"
git config merge.keepMine.driver "keepMine.sh %O %A %B"
[merge "keepMine"]
        name = always keep mine during merge
        driver = keepMine.sh %O %A %B

私が示す例では、選択を求めませんが、マージ時に常に「私の」(または「あなたの」) バージョンを保持します。
ただし、このマージ ドライバによって実行されるスクリプトを適合させて質問をし、その選択をすべてのマージに適用することができます。

于 2010-05-27T11:53:12.107 に答える