[Git] conflict
conflict
같은 위치의 코드를 동시에 수정하는 경우자동 병합이 실패하고 conflict가 발생한다.
파일의 동일한 부분을 수정하고 merge를 하면 CONFLICT 메시지가 출력된다.
conflict가 발생했을 때 자동으로 commit이 생성되지 않는다. 이런 경우 직접 conflict를 해결하고 commit을 생성해야 한다.
git status로 충돌시 상태를 확인하면 unmerged 메시지를 확인할 수 있다. 이런 충돌을 최소화 하기 위해서는 같이 작업할 때 상의를 하거나 혹은 자주 병합하는 것이 좋다.
💡 merge 취소하기
merge를 취소할 때 git merge --abort 명령어를 실행하면 된다.
conflict 해결
<<<<<<< HEAD
기준 브랜치 (main)의 코드
=======
병합하고자 하는 브랜치 (feature)의 코드
>>>>>>> 병합하고자 하는 브랜치명(feature)
conflict가 발생했을 때 git은 충돌이 발생한 부분을 표시해준다. 메시지는 위와 같다. 충돌을 해결할 때는 충돌이 발생한 부분을 나타내는 부분도 (<<<<<<< HEAD ~ >>>>>>>> feature) 모두 제거해야한다.
conflict가 발생한 코드를 수정한 다음 직접 병합한 commit을 생성해야 한다. 똑같이 add -> commit을 진행하면 conflict가 해결된다.
병합한 브랜치 삭제
병합을 완료한 브랜치는 삭제할 수 있다. 브랜치 삭제는 git branch -d 브랜치명 명령어를 실행하면 된다.
브랜치가 merge 되지 않은 경우에는 -d 옵션으로는 삭제가 불가능하다. 이런 경우에는 안내 메시지처럼 -d 옵션대신 -D 옵션을 주면된다.
git branch에 --merged 옵션을 주면 해당 브랜치 기준으로 병합된 브랜치를 확인할 수 있다. --no-merged 옵션을 통해서는 병합되지 않은 브랜치들을 확인할 수 있다.