2015-03-26 28 views
5

Diciamo che ho un file con questo contenuto in master:Perché git genera un conflitto di unione quando le linee l'una accanto all'altra vengono cambiate?

Line 1 
Line 2 
Line 3 
Line 4 

Ora dicono creo e nella verifica di un nuovo ramo chiamato test. In questo ramo modifico il file a questo:

Line 1 
Line 2 
Line 3 Modified 
Line 4 

e affido questo e tornare a master. Nel master cambio il file in:

Line 1 
Line 2 
Line 3 
Line 4 Modified 

e impegno. Ora se unisco il ramo test in master, ho un conflitto.

Perché non è possibile risolvere automaticamente questo problema utilizzando l'antenato comune? Se dico a git di modificare i conflitti usando BeyondCompare come difftool, BeyondCompare autorizza a risolvere questo problema senza nemmeno dirlo all'utente, poiché questo non è un vero conflitto. C'è un modo per ottenere git per autoresolvolare questi? Ho provato le strategie di unione recursive e resolve ma nessuno dei due lo fa.

È un problema nella nostra azienda perché ci sono determinati file in cui più sviluppatori modificano le linee nelle immediate vicinanze e questo provoca molti conflitti inutili quando lo fanno.

risposta

0

Mi sono imbattuto nello stesso problema, provenendo da SVN, ho trovato questo molto strano pure.

Non ho una risposta al perché, ma forse questo aiuta:

io uso un altro strumento di unione (a seconda di quale sistema operativo si sta lavorando), io uso fondono diff per risolvere conflitti di fusione (io lavoro su linux/ubuntu).

Ed è possibile impostare git per utilizzare questa applicazione merge esterna così ...

vedere http://meldmerge.org/

e Google per 'uso fondono per git'

esempio http://meldmerge.org/help/resolving-conflicts.html

+1

Grazie per la risposta. Utilizziamo già vari strumenti di unione esterni per git e risolvono automaticamente questi conflitti di prossimità da soli. Comunque sto cercando un modo per smettere di unire git in pausa su un tale non conflitto, in primo luogo, come spesso accade per essere fastidioso. – Falconne

+0

totalmente d'accordo! (Sono interessato ad altre risposte/soluzioni ...). un'altra cosa interessante è la fine della linea .. nel caso in cui ci siano sviluppatori che lavorano in diff. Sistema operativo, ad es. Windows e gli editori di Ubuntu pensano in modo diverso rispetto al fine linea ... questo causa molti conflitti di fusione. –

0

È possibile specificare un driver di unione personalizzato che non sarà in conflitto in questo caso in un file .gitattributes incluso nel repository.

Problemi correlati