programing

분기의 파일 제거로 인한 병합 충돌을 해결하려면 어떻게 해야 합니까?

topblog 2023. 5. 28. 19:53
반응형

분기의 파일 제거로 인한 병합 충돌을 해결하려면 어떻게 해야 합니까?

다음을 생성했습니다.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제가 또 무엇을 해야 합니까?

충돌 메시지:

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

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

그래서 당신은 결정해야 합니다.

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

또는

  • HEAD의 버전을 수락합니다(아마 편집 후).git add res/layout/dialog_item.xml"

그런 다음 "와 병합을 완료합니다.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-입력)
  9. 이제 병합을 다시 시작하면 (바라건대) 작동합니다.

두 가지 충돌이 있습니다.

  • res/layout/dialog_item.xml한 분기에서 변경되고 다른 분기에서 삭제되었습니다.
  • src/DialogAdapter.java두 지점 모두에서 변경되었습니다.

당신이 해결한 두 번째 것.이제 삭제 여부를 결정해야 합니다.res/layout/dialog_item.xml아니면 떠나요.첫 번째 경우에 당신은git rm그것, 두 번째에.git add그럼 하라git commit.

충돌 재현하기

mkdir a
cd a
git init
echo a > a && echo b > b && git add . && git commit -m c1
git checkout -b f
echo af > a && rm b && git add -A && git commit -m cf
git checkout master
echo am > a && echo bm > b && git add -A && git commit -m cm
git merge f || true

언급URL : https://stackoverflow.com/questions/1380670/how-do-i-fix-a-merge-conflict-due-to-removal-of-a-file-in-a-branch

반응형