TIL - Wecode | Git conflict

한성봉·2021년 6월 12일
0

Git conflict

1차 프로젝트를 진행 중 Git을 merge하는 과정에서 conflict 충돌이 났다.
어디서부터 어떻게 해결해야 할지 몰라 당황했던 기억이 있다.

구글링과 주변 동기들의 도움으로 금방 해결할 수 있었다. 침착하게 해결해보자.

우선 문제는 서로 다른 브랜치에서 pull request 를 날리고 각각의 브랜치를 merge하는 과정에서 일어난다. 여러가지 이유가 있겠지만 서로 다른 브랜치 환경에서 중복된 곳에서 수정이 일어났을 경우 일어나는 경우가 많다.

Github 사이트에서 해결하는 방법이 있지만 추천하지 않는다.

예를 들어보자.
우리는 main 브랜치에 항상 작업한 브랜치를 merge한다.
현재의 공동작업하는 브랜치는 4개가 있다고 가정해보자

branch 목록

  • main
  • featuer/login
  • feature/productlist
  • feature/productdetail

main을 제외한 3개의 브랜치에서 각각 작업이 진행중이다.
만약 featuer/login 브랜치의 작업이 끝나 merge가 진행됐다고 가정하자 그럼 현재 mainfeatuer/login의 작업내용은 main인 브랜치에 하나로 합쳐지게 된다.

이후 다른 팀원은 합쳐진 main 브랜치를 자신의 local환경에 업데이트 하기 위해 pull을 받게 된다.

그리고 이후 featuer/productlist 브랜치의 작업이 끝난 후 merge를 할려고 할 때 conflict가 발생한다. 당황하지 말자. 이 것은 현재 main 브랜치 의 내용과 merge하려는 브랜치의 내용이 겹쳐져 있거나 어딘가 내용이 다르기 때문에 일어난 현상이다. 해결방법을 알아보자.

해결 방법

  1. 일단 자신의 local환경에 main브랜치를 pull하여 내려받는다.
git pull origin main

그럼 현재 featuer/productlist에서 작업하던 내용은 delete되어있을 것이다. 이후 다시 작업하던 featuer/productlist 로 돌아간다.

그럼 인제 충돌 난 지점이 자신이 사용하는 에디터에 표시가 될 것이다.

그 지점을 확인하여 수정하고 다시 다음의 순서대로 pr을 날리면 해결된다.
git add .
git commit -m ""
git push origin <수정한 브랜치 이름>

0개의 댓글