2009-09-04 9 views
103

Mam utworzyć gałąź dialog i kiedy próbuję scalić go do gałęzi master. Występują 2 konflikty. Nie wiem, jak rozwiązać CONFLICT (delete/modify). Czy możesz mi powiedzieć, co mam robić?Jak naprawić konflikt scalania z powodu usunięcia pliku w oddziale?

$ 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. 

Otworzyłem src/DialogAdapter.java, stały konflikt i zrobił git add src/DialogAdapter.java. Co jeszcze muszę zrobić?

+0

Możesz przeczytać ten wpis na przepełnieniu stosu: - [Jak naprawić konflikty scalania w Git?] (Http://stackoverflow.com/questions/161813/how-do-i-fix-merge-conflicts-in -git) Przyjęta odpowiedź odnosi się do [podręcznika git] (http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#resolving-a-merge). – heavyd

Odpowiedz

160

Komunikat konflikt:

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

oznacza, że ​​res/layout/dialog_item.xml został skasowany w „dialogowym” oddział jesteś łączących, ale została zmodyfikowana w głowicy (w branży jesteś łączących się).

Więc musisz zdecydować, czy

  • usunąć pliku za pomocą "git rm res/layout/dialog_item.xml"

lub

  • przyjąć wersję z głowy (być może po edycji) z "git add res/layout/dialog_item.xml"

Następnie sfinalizujesz scalenie z "git commit".

Zauważ, że git ostrzeże Cię, że tworzysz zatwierdzenie scalenia, w (rzadkim) przypadku, gdy jest to coś, czego nie chcesz. Prawdopodobnie pozostaje z czasów, kiedy wspomniany przypadek był mniej rzadki.

+0

Dziękuję. Jakub. – n179911

+10

Wypróbowałem tego pierwszego ('git rm ...'), ale dostaję '...: potrzebuje scalenia' i' rm '...' ', co jest trudne do zinterpretowania.A jeśli spróbuję się zaangażować, ponownie pojawi się http://stackoverflow.com/questions/19985906/git-merge-not-creating-merge-commit-no -merge-head. –

+8

Mniejsza o drugą połowę tego komentarza. Wynik z Git jest nieco alarmujący, ale wydaje się nieszkodliwy. –

2

Jeśli używasz Git GUI w oknach,

  1. Abort scaleniu
  2. Upewnij się, że na oddziale docelowym
  3. Usuń konfliktowy plik z Eksploratora
  4. ponownie wyszukać zmian w Git Gui (F5)
  5. Zauważ, że plik powodujący konflikt został usunięty.
  6. Wybierz zmienione pliki zmiany etapu, aby zatwierdzić (Ctrl-I) z menu zatwierdzania
  7. Wpisz komentarz popełnić jak "konflikt usunięty plik"
  8. Commit (Ctrl + Enter)
  9. Teraz, jeśli ponowne uruchomienie to będzie (miejmy nadzieję) praca scalanie.
+0

Dlaczego downvote? Nic złego? – salihcenap

+1

Facet po prostu nie lubi, jak sobie poradzisz z Git z GUI. Sposób linii poleceń jest lepszy. – Souris

20

Zwykle po prostu uruchamiam git mergetool i monituje mnie, jeśli chcę zachować zmodyfikowany plik lub zachować go usunięty. Jest to najszybsza metoda IMHO, ponieważ jest to jedno polecenie zamiast kilku na plik.

+0

To zadziałało dla mnie, kiedy git rm - force nie zadziałało. –

Powiązane problemy