1. Merge
만약 여러 개발자들이 함께 나눠서 작업을 하고, 합치려면 어떻게 해야할까?
여러 branch에서 작업된 것을 합치는 과정을 "merge"라고 한다.
1) fast-forword : 간단한 branch 합병
가장 간단한 경우로서, 한 브랜치에서는 변경사항이 없지만 한 브랜치에서는 새로운 기능이 생긴 경우이다!
이 경우 단순히 참조값을 변경하여 두 branch를 합칠 수 있다
2) 3-way merge : 복잡한 branch 합치기
실제로 두 브랜치에서 모두 변경사항이 발생한 경우 어떻게 합칠 수 있을까?
두 변경사항을 모두 보고 비교하는 과정이 필요하다 !
git에서는 두 브랜치가 갈리지기 이전의 베이스인, c2 커밋도 함께 비교한다.
우리는 feat/a, feat/b와 같은 모습들로 파일을 보게되지만 실제로 git에 저장된 내용은 오른쪽과 같이 저장되어 있다.
아래와 같은 방식으로 merge한다.
그리고 저장을 위해 'm1' 커밋을 만들어 준다.
2. Conflict
실제 협업을 하며 개발할 때에, 변경 사항의 충돌하는 경우가 빈번하게 발생한다.
=> 이것을 'conflict'라고 한다!
conflict는 에러나 잘못된 것이 아니라 git이 해결할 수 없는 부분을 우리에게 선택하도록 하는 것이다!
즉 해당 부분을 고쳐서 실제 변경사항을 넣어주면 된다.