Skip to content

Latest commit

 

History

History
192 lines (130 loc) · 4.22 KB

File metadata and controls

192 lines (130 loc) · 4.22 KB

Conflict Rule

Conflict Rule
Git merge 나 pull 과정에서 충돌이 발생했을 때
어떻게 확인하고 해결할지 정해두는 규칙이다.

충돌은 이상한 상황이 아니라
같은 파일의 같은 부분을 서로 다르게 수정했을 때
자주 발생할 수 있는 정상적인 상황이다.

중요한 것은
충돌이 났을 때 무조건 덮어쓰지 말고
내용을 직접 확인해서 올바르게 정리하는 것이다.


1. 왜 필요한가

충돌을 대충 처리하면
필요한 코드가 사라지거나
오류가 생길 수 있다.

예를 들어 아래 같은 문제가 생길 수 있다.

  • 내 코드가 사라짐
  • 다른 사람 코드가 사라짐
  • 충돌 표시 문자가 그대로 남음
  • 실행은 되지만 로직이 꼬임
  • 어떤 내용을 남겨야 하는지 확인 없이 처리함

그래서 충돌 해결 규칙을 정해두는 것이 좋다.


2. 기본 원칙

충돌이 나면
자동으로 넘기지 말고 직접 파일 내용을 확인해서 정리해야 한다.

보통 아래 순서로 진행한다.

  • 어떤 파일에서 충돌이 났는지 확인
  • 충돌 구간 확인
  • 어떤 내용을 남길지 결정
  • 충돌 표시 제거
  • 저장 후 add
  • commit 으로 마무리

3. 충돌이 자주 나는 상황

1) merge 할 때

example: git merge main

2) pull 할 때

example: git pull origin main

3) rebase 할 때

example: git rebase main


4. 충돌 표시 예시

충돌이 나면 파일 안에 아래처럼 표시가 생긴다.

  • <<<<<<< HEAD
  • =======
  • >>>>>>> branch-name

이 표시는
어느 부분이 서로 충돌하는지 보여주는 표시이다.

의미

  • <<<<<<< HEAD 아래 : 현재 branch 내용
  • ======= : 구분선
  • >>>>>>> branch-name 위 : 들어오려는 다른 branch 내용

이 부분을 직접 보고
필요한 코드만 남긴 뒤 충돌 표시를 모두 제거해야 한다.


5. 기본 해결 흐름

recommended flow

  1. git status 로 충돌 파일 확인
  2. 충돌 파일 열기
  3. 충돌 구간 직접 확인
  4. 남길 내용 정리
  5. 충돌 표시 제거
  6. 파일 저장
  7. git add .
  8. git commit 또는 merge/rebase 계속 진행

6. 자주 쓰는 명령어

충돌 파일 확인

git status

수정 후 staging

git add .

merge 충돌 해결 후 commit

git commit

rebase 중 계속 진행

git rebase --continue

충돌 해결 중단

git merge --abort

또는

git rebase --abort


7. 작성 규칙 추천

1) 충돌 파일을 직접 열어서 확인

무슨 내용이 충돌하는지 먼저 봐야 한다.

2) 어느 쪽이 맞는지 생각하고 정리

항상 내 코드만 남기거나
항상 상대 코드만 남기는 식으로 하면 안 된다.

3) 충돌 표시를 반드시 전부 제거

<<<<<<<, =======, >>>>>>> 가 남아 있으면 안 된다.

4) 해결 후 실행 확인

특히 코드 파일이면
최소한 기본 실행은 확인하는 것이 좋다.

5) 큰 충돌은 쪼개서 확인

파일 전체를 한 번에 보지 말고
충돌 구간별로 어떤 코드가 맞는지 확인한다.


8. 나쁜 예 / 좋은 예

bad

  • 충돌 표시를 이해하지 않고 대충 삭제
  • 무조건 내 코드만 남김
  • 무조건 상대 코드만 남김
  • 충돌 해결 후 실행 확인 안 함
  • 충돌 표시가 남은 채 commit

good

  • git status 로 충돌 파일 먼저 확인
  • 충돌 구간을 직접 비교
  • 필요한 내용만 남기고 정리
  • 충돌 표시 전부 제거
  • 해결 후 add 와 commit 진행

9. 예시 흐름

merge 중 충돌 발생

git merge main
git status
충돌 파일 수정
git add .
git commit

rebase 중 충돌 발생

git rebase main
git status
충돌 파일 수정
git add .
git rebase --continue


10. 한 줄 정리

좋은 충돌 해결 규칙은
충돌 구간을 직접 확인해서 필요한 내용만 정확하게 남기고, 표시를 완전히 제거한 뒤 정리하는 것이다.