반응형
브렌치 충돌 발생 상황
상황1.
- 합치려는 브랜치가 헤드 브랜치로부터 시작되었다.
- 그 사이 헤드 브랜치에는 전혀 갱신이 없었다.
위 그림은 헤드 브랜치(*이 붙어 있는)인 master에서 version2가 시작되고 두 번 커밋한 상태이다. 여기서 병합을 하면 단순하게 master 브랜치가 가르키는 커밋이 version2의 커밋으로 이동한다.
이런 상황을 fast-forward 라고 한다. 단순히 브랜치의 참조만 갱신되는 상황이라고 볼 수 있다.
상황2.
- 과거의 커밋으로부터 브랜치를 생성해서 작업을 한 경우
- 새로운 브랜치 작업 이후에 헤드에 다른 새 커밋이 있는 경우
- 여러 브랜치를 동시에 작업하면서 병합을 시도할 경우
이 경우에도 기본이 되는 헤드 브랜치에서 타겟 브랜치를 병합하면 되긴 하는데, 이 때 여러 브랜치에서 동시에 변경한 파일이 있을 경우 충돌이 발생할 수 있다. 충돌이 생기면 에러 메시지 같은게 나온다.
- 보통 가장 최신 내용 하나만 선택하면 되는 경우가 많다.
- 그리고 최신 내용은 보통 타겟 브랜치에 있는 경우가 많다.
- 여러 파일에 변경 사항이 혼재해 있는 경우도 내가 개발했으므로 크게 어렵지 않다.
소스트리와 에디터를 사용하면 어렵지 않게 충돌 해결이 가능하다. 잘 해결했다면 아래와 같은 모양이 됩니다.
충돌 충돌 오류 해결방법
안 쓰는 브랜치 삭제하기
- 현재 브랜치(HEAD) 가 아닌 경우 간단하게 삭제 가능하다.
- 브랜치를 삭제했을 경우 사라지는 커밋이 있는지 없는지 확인한다.
git pull
- 서버의 내용이 최신일 경우 pull을 적용한다.
- 충돌이 날 수 있다.
- pull = fetch + merge
충돌의 발생원인
- 자동병합을 실패했을 경우 발생한다.
- 주로 두 커밋이 같은 파일을 편집했을 경우 발생한다.
일반적인 해결 방법
- 에디터를 이용한 해결한다.
- 병합툴을 이용한 해결한다.
- sourceTree를 이용한 해결한다.
에디터를 사용한 해결
- 충돌난 파일을 꼼꼼히 읽어가며 수동으로 수정한다.
내것 또는 저장소 것 선택하기
- 혼자서 작업할 경우 일반적으로 두 변경사항 중 하나(주로 내 것)가 최신이고 정답일 가능성이 높다.
반응형
'프로그래밍 개발 > GIT' 카테고리의 다른 글
GITHUB+sourceTree 브렌치를 만들어서 커밋 되돌리기 (0) | 2020.11.13 |
---|---|
GITHUB+sourceTree reset을 이용한 커밋 되돌리기 (0) | 2020.11.09 |
GITHUB+sourceTree 브렌치 병합(merge) (0) | 2020.11.06 |
GITHUB+sourceTree 브렌치(branch) 하기 (0) | 2020.11.06 |
GITHUB+sourceTree 변경 사항 취소하기 (0) | 2020.11.03 |
댓글