본문 바로가기

회고와 이슈/이슈와 정보

[Git Error] Merge with strategy ort failed.

반응형

해당 포스트는

해당 이슈의 해결책으로 적용된 각 명령어에 대한 설명을 기록하여 향후 참고 용도로 삼기 위해서 작성된 포스트 입니다.

 

문제 및 원인

 

해당 에러가 발생하는 원인은 원격 저장소의 최신 히스토리와 로컬 저장소의 최신 히스토리 간에 충돌이 발생하였으나, 해당 충돌이 자동으로 병합하기에는 복잡한 경우에 발생할 수 있습니다.

- 이슈 관련 커뮤니티(스택오버 플로우): https://stackoverflow.com/questions/75673699/how-to-fix-the-problem-merge-with-strategy-ort-failed

 

해결방법

해당 문제를 해결하려면 우선 로컬 저장소의 변경사항을 merge 하지 않고 잠시 별도의 임시 공간에 저장해둡니다. 그 후 원격 저장소에서 받아온 최신 히스토리를 로컬 저장소로 가져오고, 가져온 직후 임시로 저장해둔 로컬의 변경사항을 반영하면 해결할 수 있습니다.

 

아래 명령어를 차례대로 입력하면 됩니다.

 

git stash

작업 디렉토리와 스테이징 영역에서 커밋되지 않은 모든 변경 사항을 일시적으로 저장(또는 보관)합니다. 이를 통해 커밋되지 않은 변경 사항과의 충돌을 걱정하지 않고 원격에서 변경 사항을 가져올 수 있습니다.

git stash 와 git add 는 서로 변경 사항을 저장하는 것은 동일하지만, git stash 는 임시 저장 공간에 변경 내역을 저장합니다
반면, git add 는 변경사항을 커밋 이전에 임시적으로 저장되는 스테이징 영역에 저장 됩니다.


git pull origin parent-branch

원격 브랜치 parent-branch(원격에 있음 origin)에서 최신 변경 사항을 가져와 현재 브랜치에 병합합니다. 이렇게 하면 브랜치가 .의 최신 변경 사항으로 최신 상태를 유지합니다 


git stash apply 0

stash 목록에서 첫 번째(또는 0으로 색인된) stash된 변경 사항을 작업 디렉토리에 다시 적용합니다. 0은  가장 최근의 stash를 나타냅니다. 일반 를 사용한 경우 git stash apply가장 최근의 stash도 적용하지만 0를 사용하면 명시적으로 적용합니다.

 

정리

이후 충돌없이 정상적으로 로컬의 변경 사항이 원격 저장소의 변경 사항과 병합되는 것을 볼 수 있습니다.

 

제가 이 문제를 경험한 이유는 로컬에서 변경 사항을 커밋하지 않고 스테이징 영역에 변경사항을 저장해둠에 따라 총돌이 발생한 것이었습니다. 위 과정을 통해서 해결할 수 있었습니다. 동일한 문제를 경험하는 분에게 도움이 되는 포스트 였길 바라며 글을 줄여봅니다.

반응형