2010-05-27 10 views
7

Quando i file binari, swfs, giare e flv vengono modificati localmente, e provo a inserire le modifiche, git prova a unirle e segnala conflitti.Dire di non unire file binari ma di scegliere

E quindi, mi dirigo su un ramo temporaneo e impegno i file binari modificati locali e li unisco di nuovo dopo il pull con la loro strategia ricorsiva. -- Troppo lavoro.

C'è un modo per dire git, non tentare di unire file binari e chiedermi quale di queste versioni utilizzare.

risposta

6

È possibile impostare un drive unione in un file .gitattributes (solo per un determinato sottostruttura, solo per alcuni tipi di file)

Vedi this question per esempio (o this one).

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

dichiarare il vostro autista si fondono nella configurazione del repo Git:

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

o

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 

L'esempio che do non ti chiedere una scelta, ma terrò sempre versione "mia" (o "tua") durante l'unione.
Tuttavia, è possibile adattare lo script eseguito da questo driver di unione per fare una domanda e quindi applicare la scelta a tutte le unioni.