2009-09-04 14 views
103

Ho creato un ramo dialog e quando provo a unirlo al ramo master. Ci sono 2 conflitti. Non so come risolvere CONFLICT (delete/modify). Puoi per favore dirmi cosa devo fare?Come posso risolvere un conflitto di unione dovuto alla rimozione di un file in un ramo?

$ git checkout master 
$ git merge dialog 
CONFLICT (delete/modify): res/layout/dialog_item.xml deleted in dialog and modified in HEAD. Version HEAD of res/layout/dialog_item.xml left in tree. 
Auto-merging src/com/DialogAdapter.java 
CONFLICT (content): Merge conflict in src/DialogAdapter.java 
Automatic merge failed; fix conflicts and then commit the result. 

ho aperto src/DialogAdapter.java, fissa il conflitto e ha fatto un git add src/DialogAdapter.java. Cos'altro devo fare?

+0

Puoi leggere questo post su Stack Overflow: - [Come posso risolvere i conflitti di merge in Git?] (Http://stackoverflow.com/questions/161813/how-do-i-fix-merge-conflicts-in -git) La risposta accettata fa riferimento al [manuale di git] (http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#resolving-a-merge). – heavyd

risposta

160

Il messaggio di conflitto:

 
CONFLICT (delete/modify): res/layout/dialog_item.xml deleted in dialog and modified in HEAD 

significa che res/layout/dialog_item.xml è stato cancellato nel ramo 'finestra' si uniscono, ma è stato modificato in testa (nel ramo si uniscono a).

Quindi devi decidere se

  • file rimuove con "git rm res/layout/dialog_item.xml"

o

  • accettare la versione da testa (forse dopo la modifica) con "git add res/layout/dialog_item.xml"

Quindi finalizzate l'unione con "git commit".

Nota che git ti avviserà che stai creando un commit di unione, nel (raro) caso in cui è qualcosa che non vuoi. Probabilmente rimane dai giorni in cui il caso era meno raro.

+0

Grazie. Jakub. – n179911

+10

Ho provato il primo ('git rm ...') ma ottengo '...: ha bisogno di unire' e' rm '...' 'che sto avendo difficoltà a interpretare.E poi se provo a impegnarmi, http://stackoverflow.com/questions/19985906/git-merge-not-creating-merge-commit-no-merge-head ritorna di nuovo. –

+8

Non importa la seconda parte di quel commento. L'output di Git è alquanto allarmante, ma sembra essere innocuo. –

2

Se si utilizza Git Gui sulle finestre,

  1. Abort l'unione
  2. Assicurarsi siete sul vostro ramo di destinazione
  3. Eliminare il file in conflitto da esploratore
  4. Nuova scansione per i cambiamenti nel Git Gui (F5)
  5. Si noti che il file in conflitto viene eliminato
  6. Selezionare i file modificati di fase da eseguire (Ctrl-I) dal menu di commit
  7. inserire un commento impegnarsi come "cancellato il file in conflitto"
  8. Commit (Ctrl-Enter)
  9. Ora, se si riavvia l'unione lo farà (si spera) di lavoro.
+0

Perché downvote? Qualcosa di sbagliato? – salihcenap

+1

Al ragazzo non piace il modo in cui gestisci Git con la GUI, probabilmente. Una via della linea di comando è migliore. – Souris

20

Normalmente eseguo solo git mergetool e verrà richiesto se si desidera mantenere il file modificato o tenerlo eliminato. Questo è il modo più veloce IMHO poiché è un comando invece di più per file.

+0

Questo ha funzionato per me, quando git rm --force no. –

Problemi correlati