브랜치에서 파일 제거로 인한 병합 충돌을 어떻게 해결합니까? dialog CONFLICT (delete/modify): res/layout/dialog_item.xml

dialog지점 을 만들고 지점과 병합하려고 할 때 master. 두 가지 충돌이 있습니다. 해결 방법을 모르겠습니다 CONFLICT (delete/modify). 어떻게해야하는지 말씀해 주시겠습니까?

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

나는 src/DialogAdapter.java갈등을 해결하고 해결했다 git add src/DialogAdapter.java. 다른 무엇을해야합니까?



답변

충돌 메시지 :

충돌 (삭제 / 수정) : res / layout / dialog_item.xml이 대화 상자에서 삭제되고 HEAD에서 수정되었습니다.

이는 res/layout/dialog_item.xml병합중인 ‘dialog’분기에서 삭제되었지만 HEAD (병합중인 분기)에서 수정 되었음을 의미합니다 .

그래서 당신은 여부를 결정해야

  • git rm res/layout/dialog_item.xml“를 사용하여 파일 제거

또는

  • git add res/layout/dialog_item.xml” 를 사용하여 HEAD (아마도 편집 한 후)의 버전을 수락하십시오.

그런 다음 ” git commit“로 병합을 마무리 합니다.

git은 원하지 않는 (희귀 한) 병합 커밋을 만들고 있음을 경고합니다. 아마도 그 사건이 덜 드문 시절부터 남아있을 것입니다.


답변

나는 보통 그냥 달려 git mergetool 되며 수정 된 파일을 유지하거나 삭제 된 상태로 유지할 것인지 묻는 메시지가 표시됩니다. IMHO는 파일 당 여러 명령 대신 하나의 명령이기 때문에 가장 빠른 방법입니다.

특정 서브 디렉토리에 여러 개의 삭제 된 파일이 있고 파일을 삭제하여 모든 파일을 해결하려는 경우 다음을 수행 할 수 있습니다.

yes d | git mergetool -- the/subdirectory

d각 파일을 삭제 선택하기 위해 제공됩니다. m수정 된 파일을 유지하는 데 사용할 수도 있습니다 . 실행할 때 표시되는 프롬프트에서 가져옵니다 mergetool.

Use (m)odified or (d)eleted file, or (a)bort?

답변

창에서 Git Gui를 사용하는 경우

  1. 병합 중단
  2. 목표 지점에 있는지 확인하십시오
  3. 탐색기에서 충돌하는 파일 삭제
  4. Git Gui (F5)의 변경 사항을 다시 검색
  5. 충돌하는 파일이 삭제되었습니다.
  6. 커밋 메뉴에서 커밋 할 스테이지 변경 파일 선택 (Ctrl-I)
  7. “삭제 된 충돌 파일”과 같은 커밋 주석을 입력하십시오.
  8. 커밋 (Ctrl-enter)
  9. 이제 병합을 다시 시작하면 희망적으로 작동합니다.