본문 바로가기

Git

[git] 서브모듈 해쉬 커밋 충돌 날 때 충돌 해결 편법

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에서 병합 시작

  1. 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
  1. 충돌 상태 확인
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