Git
[git] 서브모듈 해쉬 커밋 충돌 날 때 충돌 해결 편법
코딩질문자
2024. 12. 10. 18:12
728x90
1. 작업 흐름: 브랜치 전환을 이용한 서브모듈 충돌 처리
상황: dev -> prd 병합 중 src/assets/common 서브모듈 파일 충돌 발생
편법: 브랜치를 하나 만들어서 해당 브랜치에서 src/assets/common 충돌 상황을 추적하게 만들고 다른 브랜치로 이동해서 git status를 이용해서 충돌 처리
서브모듈같은 독립적인 저장조는 다른 브랜치에서도 git status를 인식이 가능하다고함. 이 편법을 이용
0단계: dev: dev-host-1, prd: prd-khs 로 브랜치 생성
1단계: prd-khs에서 병합 시작
- prd-khs 브랜치로 이동
git checkout prd-khs
2. prd-khs 브랜치에서 dev 병합 시도
- 이 시점에서 충돌이 발생
CONFLICT (submodule): Merge conflict in src/assets/common Automatic merge failed; fix conflicts and then commit the result.
git pull origin dev
- 충돌 상태 확인
git status
On branch prd-khs Unmerged paths: (use "git add <file>..." to mark resolution) both modified: src/assets/common
2단계: 충돌 해결
브랜치를 전환하여 충돌 해결 준비
git checkout dev-host-2
git status 확인:출력:
git status
On branch dev-host-2 Changes not staged for commit: modified: src/assets/common (new commits)
충돌 파일 처리 (dev 기준)
git checkout --ours src/assets/common git add src/assets/common
병합 커밋 생성
git commit -m "Resolve merge conflicts: keep dev's changes for src/assets/common"
3단계: 브랜치 전환 후 병합 상태 완료다시 prd-khs로 전환:
병합 커밋 확인 및 푸시
git checkout prd-khs
git push origin prd-khs
병합 상태를 리뷰 후 최종 병합 (Optional):
git checkout prd git merge prd-khs git push origin prd
728x90