코드잇 스프린트 4기
3주 차 위클리 페이퍼
머지(merge)
머지(merge)는 서로 다른 브랜치의 작업 내용을 합칠 때 사용한다.
1. 활용
1) 머지(merge) 하기
feature/intro-header
브랜치에서 feature/intro-bottom
브랜치의 내용을 합친다고 가정.
- 반영이 되고자 하는 브랜치로 이동.
git checkout feature/intro-header
- 작업 내용을 가져올 브랜치를
merge
한다.git merge feature/intro-bottom
2) 충돌(conflict)
많은 상황에서 merge할 때 conflict가 발생한다.
conflict를 해결하고 merge를 진행하는 방법과 일단 merge를 취소하는 방법이 있다.
(1) 충돌(conflict) 해결하기
merge를 진행하면 conflict가 발생하는 파일을 알려준다.
$ git merge feature/intro-bottom
Auto-merging intro.js
CONFLICT (add/add): Merge conflict in intro.js
Automatic merge failed; fix conflicts and then commit the result.
해당 파일로 이동하면 conflict가 발생한 부분을 표시해준다.
$ cat intro.js
<<<<<<< HEAD
console.log('header');
=======
console.log('bottom');
>>>>>>> feature/intro-bottom
conflict를 해결 후 commit을 진행하면 된다.
$ cat intro.js
console.log('header');
console.log('bottom');
git add intro.js
git commit
(2) 머지(merge) 취소하기
당장 conflict를 해결하지 않고 넘어가려면 merge를 중단하면 된다.git merge --abort
2. 종류
1) Fast-Forward merge
merge하려는 두 브랜치가 같은 커밋 히스토리 선(line) 상에 있을 때 이루어짐.
새로운 커밋이 생기지 않고 단지 브랜치가 이동.
2) Three-way merge
merge하려는 두 브랜치가 공통된 조상(base) 브랜치를 기점으로 분기했을 때 이루어짐.
merge 커밋이 생성됨.
(1) 머지(merge) 반영
공통된 조상(base) 브랜치의 내용과 비교했을 때 달라진 부분을 우선으로 반영.
경우 | base | my(feature/intro-header) | other(feature/intro-bottom) | 머지 결과 | |
---|---|---|---|---|---|
case1 | A | A | B | -> | B |
case2 | 1 | 1 | 2 | -> | 2 |
case3 | "hello" | (공백) | "hello" | -> | (공백) |
case4 | "bye" | "fighting" | "please" | -> | conflict |
감사합니다.
참고 자료
https://www.atlassian.com/ko/git/tutorials/using-branches/git-merge
'코드잇 스프린트 4기 > 위클리 페이퍼' 카테고리의 다른 글
[JavaScript] 얕은 복사, 깊은 복사 (0) | 2024.01.20 |
---|---|
[Git] Git-flow (0) | 2024.01.12 |
[CSS] 포지션(Position) (0) | 2024.01.07 |
[HTML] 시맨틱 태그(Semantic Tag) (0) | 2024.01.07 |
[CSS] 캐스케이딩(Cascading) (1) | 2023.12.31 |
댓글