2013-07-17 17 views
15

Qualche tempo fa ho creato una filiale dal mio ramo master. Chiamiamolo new_feature. Mentre stavo lavorando su new_feature, il ramo master ha seguito la sua normale evoluzione. Ora che new_feature è pronto per essere unito in master, vedo alcuni conflitti, tutti in file che non sono affatto correlati alla nuova funzione (come alcuni file di configurazione e simili che sono stati modificati su master). Ho intenzione di risolvere i conflitti manualmente, ma mi chiedevo, dal momento che è una situazione che accade abbastanza spesso, come posso semplicemente unire il ramo new_feature a master mantenendo sempre la versione master dei file in caso di conflitto?Come preferire i file da un ramo durante un'unione?

Sono sicuro che è facile ed è correlato a qualcosa come "mantenere la versione" ma, dal momento che è un argomento piuttosto delicato, preferirei piuttosto che dispiacerti.

+1

La documentazione descrive diverse strategie di unione, tra cui quella che ti interessa, in dettaglio. Dovresti sempre essere in grado di recuperare e riprovare se qualcosa va storto, quindi neanche un po 'di sperimentazione farà male. –

+0

Controlla questa domanda SO: http://stackoverflow.com/questions/528659/git-automatic-conflict-resolution –

+0

Grazie a @CarlNorum, ti stai riferendo alla strategia ricorsiva con l'opzione nostra? Non sono sicuro di capire se questa strategia mantiene l'intero albero come padrone. – Bastian

risposta

17

Come menzionato nel commento ci sono diverse strategie nella documentazione. Puoi anche trovarli qui: http://git-scm.com/docs/git-merge

Stai cercando git merge -s recursive -X ours o git merge -s recursive -X theirs a seconda del ramo in cui ti trovi. Fai attenzione a questi perché potresti perdere accidentalmente le modifiche ai tuoi file dall'altro ramo e questi verrebbero sovrascritti.

Un altro metodo, che preferisco a causa di un maggiore controllo, è a git checkout <other-branch> -- <list of files>. In questo modo non sovrascrivo accidentalmente un file con le modifiche sbagliate.

+1

Giusto per essere sicuro di aver capito bene, nel mio caso se faccio 'git merge -s recursive -X our new_feature' dal master otterrò i cambiamenti da new_feature ma i file in conflitto rimarranno come sono su master? – Bastian

+0

sì, è corretto. – Schleis

Problemi correlati