분기의 파일 제거로 인한 병합 충돌을 해결하려면 어떻게 해야 합니까?
다음을 생성했습니다.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를 사용하고 있다면,
- 병합을 중단
- 대상 분기에 있는지 확인합니다.
- 탐색기에서 충돌하는 파일 삭제
- Git Gui의 변경 사항 다시 검색(F5)
- 충돌하는 파일이 삭제되었습니다.
- 커밋 메뉴에서 커밋할 변경된 파일 준비(Ctrl-I) 선택
- "삭제된 충돌 파일"과 같은 커밋 주석 입력
- 커밋(ctrl-입력)
- 이제 병합을 다시 시작하면 (바라건대) 작동합니다.
두 가지 충돌이 있습니다.
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
'programing' 카테고리의 다른 글
Azure DocumentDb에서 레코드 수 가져오기 (0) | 2023.06.02 |
---|---|
Swift에서 "Index"를 "Int" 유형으로 변환하는 방법은 무엇입니까? (0) | 2023.06.02 |
RHEL에 Python 3 설치 (0) | 2023.05.28 |
WPF의 프리즘이란 무엇입니까? (0) | 2023.05.28 |
몽구스 & 고유 필드 (0) | 2023.05.28 |