반응형
    
    
    
  Git-flow를 쓰다 보면 hotfix를 main 브랜치에 먼저 반영해야 하는 경우가 있습니다.
그런데 이 수정 사항을 develop에도 별도의 commit으로 넣어두면,
나중에 develop → main 머지할 때 문제가 생기곤 합니다.
문제 상황
develop -> main branch로 merge하기 위해 pr올린 상황에서 두 브랜치에서 같은 코드 부분이 변경된 이력으로 표시되는 문제가 발생했다. git에 문제가 생겼나 의심하면서 다시 pr을 올려봤지만 동일한 현상은 계속 발생했습니다.
- main에서 hotfix 진행
git checkout main
# 버그 수정
git commit -m "hotfix: critical bug fix"
git push origin main
2. develop에도 동일한 수정을 별도 commit으로 추가
git checkout develop
# 동일 수정
git commit -m "fix: same bug fix on develop"
git push origin develop3. 이렇게 되면 코드 내용은 같아도 commit hash가 다르기 때문에 나중에 develop → main 머지 시 충돌(conflict)이나 중복 diff가 발생할 수 있습니다.
올바른 해결 방법
핵심은 main의 hotfix commit을 develop으로 merge 해주는 것입니다.
git checkout develop
git merge main정상적으로 merge되면 아래처럼 메시지가 뜹니다.
Merge made by the 'ort' strategy.이 상태에서는 main과 develop이 동일한 commit을 공유하기 때문에, 나중에 develop → main 머지할 때 문제가 발생하지 않습니다.
'ort' strategy란?
Git 2.34부터 기본 머지 전략이 recursive에서 ort로 바뀌었습니다.
- ort = Optimal Recursive Technique
- 장점:
- 이전보다 훨씬 빠른 머지 성능
- 충돌 처리 로직 단순화
- 더 직관적인 결과 제공
 
따라서 "Merge made by the 'ort' strategy."는 최신 Git에서 정상적으로 merge가 수행되었다는 의미입니다.
정리
- hotfix는 무조건 main에서 처리
- hotfix 후에는 반드시 main → develop merge 진행 및
- develop에 동일한 수정을 별도 commit으로 만들면 안 됨
이 원칙만 지키면, main–develop 사이에서 꼬이는 문제를 피할 수 있습니다.
반응형