Critical
- Fast-Forward(빨리 감기) 병합
- git merge & merge commits
- 병합 충돌과 해결 방법
Nice To Have
- VS Code 사용을 통한 충돌 해결 방법
병합의 2가지 원칙
- 특정 커밋이 아닌 브랜치를 병합한다.
- 항상 현재 HEAD 브랜치에 병합한다.
* Fast-Forward(빨리 감기) 병합
- 목적지(병합하려는) 브랜치로 이동한다. (B를 A에 합치고 싶다면 A로 이동)
- git merge B 실행
- A의 브랜치가 B의 브랜치를 따라잡게 된다.
병합을 하더라도 병합 대상의 내용들이 브랜치에 추가되는 것은 한 순간이고 동기화가 계속 이뤄지는것은 아니다. 여전히 별개의 브랜치로 존재한다.
그리고 모든 병합이 빨리 감기 병합은 아니다.
예를 들어 main에서 브랜치를 새로 만들어서 작업 후 main 브랜치에 병합하려고 하는데 그 사이 다른 팀원들에 의해 main 브랜치에서 커밋이 이뤄졌다면 현재 나의 브랜치에는 없는 새로운 정보들이 main 브랜치에 존재하게 된다.
이 때 병합을 하게되면 빨리 감기 병합이 아닌 merge commit(병합 커밋)이 이뤄지고 해당 커밋은 2개의 부모를 가지게 된다.
위와 같은 병합 커밋은 서로 다른 파일로 작업을 진행했기 때문에 충돌 없이 자동으로 병합이 이뤄진다.
병합하려는 브랜치의 파일이 삭제되거나 동일한 파일을 수정해서 충돌이 발생하는 경우 깃은 충돌이 발생한 파일을 알려주게 된다.
이 때 충돌이 발생한 파일을 열어서 직접 해결하면 된다.
대부분의 경우 병합 커밋이 완료되면 병합 대상의 브랜치는 더 이상 필요 없으므로 삭제하는 편이다.
* 병합 충돌이 발생한 경우
- 충돌이 발생한 파일 열기
- 파일 수정
- 충돌 표시 제거
- 커밋
VS Code를 이용하면 병합 커밋을 조금 더 편하게 할 수 있다.
상단의 Accept 메뉴를 클릭하면 한쪽 내용만을 적용하거나 양쪽 다 적용하는 등 단순 작업을 더 편하게 할 수 있다.
'프로그래밍 > Git & Github' 카테고리의 다른 글
[Git & Github] 9. 스태시(Stash)의 모든 것 (0) | 2022.10.21 |
---|---|
[Git & Github] 8. Git Diff로 변경사항 비교하기 (0) | 2022.10.20 |
[Git & Github] 6. 브랜치(branch)로 작업하기 (0) | 2022.10.18 |
[Git & Github] 5. 커밋과 관련 주제 자세히 알아보기 (0) | 2022.10.18 |
[Git & Github] 4. Git의 기초: 추가하기와 커밋하기 (0) | 2022.10.18 |