Conflict Rule 은
Git merge 나 pull 과정에서 충돌이 발생했을 때
어떻게 확인하고 해결할지 정해두는 규칙이다.
충돌은 이상한 상황이 아니라
같은 파일의 같은 부분을 서로 다르게 수정했을 때
자주 발생할 수 있는 정상적인 상황이다.
중요한 것은
충돌이 났을 때 무조건 덮어쓰지 말고
내용을 직접 확인해서 올바르게 정리하는 것이다.
충돌을 대충 처리하면
필요한 코드가 사라지거나
오류가 생길 수 있다.
예를 들어 아래 같은 문제가 생길 수 있다.
- 내 코드가 사라짐
- 다른 사람 코드가 사라짐
- 충돌 표시 문자가 그대로 남음
- 실행은 되지만 로직이 꼬임
- 어떤 내용을 남겨야 하는지 확인 없이 처리함
그래서 충돌 해결 규칙을 정해두는 것이 좋다.
충돌이 나면
자동으로 넘기지 말고 직접 파일 내용을 확인해서 정리해야 한다.
보통 아래 순서로 진행한다.
- 어떤 파일에서 충돌이 났는지 확인
- 충돌 구간 확인
- 어떤 내용을 남길지 결정
- 충돌 표시 제거
- 저장 후 add
- commit 으로 마무리
example:
git merge main
example:
git pull origin main
example:
git rebase main
충돌이 나면 파일 안에 아래처럼 표시가 생긴다.
<<<<<<< HEAD=======>>>>>>> branch-name
이 표시는
어느 부분이 서로 충돌하는지 보여주는 표시이다.
<<<<<<< HEAD아래 : 현재 branch 내용=======: 구분선>>>>>>> branch-name위 : 들어오려는 다른 branch 내용
이 부분을 직접 보고
필요한 코드만 남긴 뒤 충돌 표시를 모두 제거해야 한다.
git status로 충돌 파일 확인- 충돌 파일 열기
- 충돌 구간 직접 확인
- 남길 내용 정리
- 충돌 표시 제거
- 파일 저장
git add .git commit또는 merge/rebase 계속 진행
git status
git add .
git commit
git rebase --continue
git merge --abort
또는
git rebase --abort
무슨 내용이 충돌하는지 먼저 봐야 한다.
항상 내 코드만 남기거나
항상 상대 코드만 남기는 식으로 하면 안 된다.
<<<<<<<, =======, >>>>>>> 가 남아 있으면 안 된다.
특히 코드 파일이면
최소한 기본 실행은 확인하는 것이 좋다.
파일 전체를 한 번에 보지 말고
충돌 구간별로 어떤 코드가 맞는지 확인한다.
- 충돌 표시를 이해하지 않고 대충 삭제
- 무조건 내 코드만 남김
- 무조건 상대 코드만 남김
- 충돌 해결 후 실행 확인 안 함
- 충돌 표시가 남은 채 commit
git status로 충돌 파일 먼저 확인- 충돌 구간을 직접 비교
- 필요한 내용만 남기고 정리
- 충돌 표시 전부 제거
- 해결 후 add 와 commit 진행
git merge main
git status
충돌 파일 수정
git add .
git commit
git rebase main
git status
충돌 파일 수정
git add .
git rebase --continue
좋은 충돌 해결 규칙은
충돌 구간을 직접 확인해서 필요한 내용만 정확하게 남기고, 표시를 완전히 제거한 뒤 정리하는 것이다.