2022. 4. 19. 13:01ㆍGit
1. 병합은 무엇인가?
병합은 두 버전의 합집합을 구하는 것입니다.
- 병합 커밋 : 각각의 커밋이 겹치는 부분이 없으므로 새로운 커밋에 합친 결과가 나옴
- 빨리 감기 : 커밋2가 커밋1을 기반으로 b.txt를 추가한 것이므로 병합 결과는 커밋2와 동일하게 나옴
- 충돌 : 커밋1이 a.txt를 작성하고 커밋2가 a.txt에서 작성한 부분을 수정하였다고 가정할때 병합시 충돌이 발생함. Git은 어떤 것으로 병합할지 오류를 일으킴
2. 두 브랜치를 합치는 과정
2.1 main 브랜치에 feature/detail-page 브랜치를 합치기(Before)
feature/detail-page 브랜치의 커밋은 단순히 main 브랜치를 기반으로 수정한 최신본이기 때문에 두 상태(main, feature/detail-page)를 합치면 따로 바귀는 상태 없이 feature/detail-page 커밋이 될 것입니다. 이는 위의 경우에는 빨리 감기(Fast-forword)에 해당됩니다.
2.2 main 브랜치에 feature/detail-page 브랜치를 합치기(After)
2.3 [feature/detail-page] 브랜치의 모든 내용이 [main] 브랜치에 병합되었으므로 [feature/detail-page] 브랜치는 삭제됩니다.
2.4 [feature/cart] 브랜치를 [main] 브랜치에 병합 시도
현재 [main] 브랜치는 [feature/cart] 브랜치가 가리키는 중심 커밋(update README.md)에서 달라졌기 때문에 빨리 감기 병합이 아닌 병합 커밋 사례가 됩니다. 이는 [main] 브랜치의 커밋과 [feature/cart] 브랜치의 커밋을 합친 병합 커밋을 생성하게 됩니다.
방법1 : [main] 브랜치의 커밋과 [feature/cart] 브랜치의 커밋을 합한 병합 커밋을 [main] 브랜치에 올림
방법2 : [main] 브랜치의 커밋과 [feature/cart] 브랜치의 커밋을 합한 병합 커밋을 [feature/cart] 브랜치에 올림
브랜치를 기준으로 병합하는 경우 2가지
- [main] 브랜치를 기준으로 병합 : 합친 결과물을 [main] 브랜치에 반영
- [feature/cart] 브랜치를 기준으로 병합 : 합친 결과물을 [feature/cart] 브랜치(서브 브랜치)에 반영
3. 브랜치 합치기 실습 : 빨리 감기 병합(Fast-forward Merge)
[main] 브랜치를 기준으로 [feature/detail-page] 브랜치를 [main] 브랜치에 합치는 것을 실습합니다.
3.1 [main] 브랜치로 체크아웃
3.2 [main] [feature/detail-page] 브랜치의 커밋을 오른쪽 버튼을 클릭하고 병합 수행
3.3 [main] 원격저장소의 main 브랜치에 푸시
References
source code : https://github.com/yonghwankim-dev/git_study
팀 개발을 위한 Git Github 시작하기, 정호영 진유림 저
'Git' 카테고리의 다른 글
[Git] 브랜치를 합치는 예의바른 방법 : 풀 리퀘스트(Pull Request) (0) | 2022.04.19 |
---|---|
[Git] 충돌(conflict) 해결하기 (0) | 2022.04.19 |
[Git] 브랜치 실습 기본 : 만들고, 이동한다 (0) | 2022.04.19 |
[Git] 원격저장소에서 협업하기 : 브랜치(Branch) (0) | 2022.04.19 |
[Git] 그림으로 Git 뜯어보기 (0) | 2022.04.18 |