1차 프로젝트를 진행 중 Git을 merge하는 과정에서 conflict 충돌이 났다.
어디서부터 어떻게 해결해야 할지 몰라 당황했던 기억이 있다.
구글링과 주변 동기들의 도움으로 금방 해결할 수 있었다. 침착하게 해결해보자.
우선 문제는 서로 다른 브랜치에서 pull request
를 날리고 각각의 브랜치를 merge하는 과정에서 일어난다. 여러가지 이유가 있겠지만 서로 다른 브랜치 환경에서 중복된 곳에서 수정이 일어났을 경우 일어나는 경우가 많다.
Github 사이트에서 해결하는 방법이 있지만 추천하지 않는다.
예를 들어보자.
우리는 main
브랜치에 항상 작업한 브랜치를 merge한다.
현재의 공동작업하는 브랜치는 4개가 있다고 가정해보자
branch
목록
main을 제외한 3개의 브랜치에서 각각 작업이 진행중이다.
만약 featuer/login
브랜치의 작업이 끝나 merge
가 진행됐다고 가정하자 그럼 현재 main
과 featuer/login
의 작업내용은 main
인 브랜치에 하나로 합쳐지게 된다.
이후 다른 팀원은 합쳐진 main
브랜치를 자신의 local환경에 업데이트 하기 위해 pull을 받게 된다.
그리고 이후 featuer/productlist
브랜치의 작업이 끝난 후 merge를 할려고 할 때 conflict가 발생한다. 당황하지 말자. 이 것은 현재 main 브랜치 의 내용과 merge하려는 브랜치의 내용이 겹쳐져 있거나 어딘가 내용이 다르기 때문에 일어난 현상이다. 해결방법을 알아보자.
main
브랜치를 pull하여 내려받는다. git pull origin main
그럼 현재 featuer/productlist
에서 작업하던 내용은 delete되어있을 것이다. 이후 다시 작업하던 featuer/productlist
로 돌아간다.
그럼 인제 충돌 난 지점이 자신이 사용하는 에디터에 표시가 될 것이다.
그 지점을 확인하여 수정하고 다시 다음의 순서대로 pr을 날리면 해결된다.
git add .
git commit -m ""
git push origin <수정한 브랜치 이름>