Git
[GIT] Branch 병합(Merge)와 충돌(Conflict) 해결
걸어가는 신사
2022. 1. 17. 04:27
위 글은 코드프레소 Java 웹 개발 체험단 활동 중
실무자가 알려주는 Git 활용한 프로젝트 관리 수업을 듣고 정리한 글입니다.
코드프레소 URL : https://www.codepresso.kr/
1. Branch 병합(Merge)
(1) 브랜치 이동
- 기준이 되는 브랜치로 이동해서 병합해야 한다.
- master 브랜치를 기준으로 issue 브랜치를 병합할 것이다. (master = master + issue)
- issue -> master
- $ git checkout master
- master 브랜치를 기준으로 issue 브랜치를 병합할 것이다. (master = master + issue)
(2) 브랜치 병합
- 합쳐질 브랜치(issue)를 병합한다.
$ git merge issue
- 병합 이후 master가 Commit 5를 가리키는 것을 알 수 있다.
(3) 브랜치 삭제
- 더 이상 사용되지 않는 브랜치는 삭제해주는 것이 좋다.
$ git branch -d issue
2. 3-way Merge
- 3개 커밋을 모두 고려하여 병합하는 방식
- 1) master와 feature-login 브랜치의 공통 부모 커밋
- 2) master 브랜치의 최신 커밋
- 3) feature-login 브랜치의 최신 커밋
- 3-way Merge의 결과는 새로운 커밋으로 생성된다.
- 기준이 되는 브랜치로 이동해서 병합한다.
- $ git checkout master
- 합쳐질 브랜치를 병합한다.
- $ git merge feature-login
3. 변경사항의 충돌(Conflict)
- 만약 feature-login 브랜치와 master 브랜치의 MainService.java 파일이 다른 경우 충돌이 발생한다.
- 3-way merge를 할 수 없다.
- $ git merge feature-login
4. 충돌(Conflict) 해결
- mergetool을 사용한다.
$ git mergetool
- git mergetool 입력 시 위와같은 화면이 나오는데 vimdiff를 입력해준다.
// vimdiff 입력시 에러 메시지가 발생한다면 아래 설정 후 재시도한다.
$ git config merge.tool vimdiff
- 개발자의 의도대로 수정
- Conflickt 기호 제거 (<<<<<<. ======, >>>>>>)
- 수정 완료되면 저장 후 종료한다.
- 나머지 3-way 창은 수정 없이 종료된다.
- 병합이 제대로 되었는지 확인 후, commit 생성 => 이때 병합된다.
반응형