4. 브랜치(Branch) 병합하기
"브랜치 병합(merge)"
- 만들어진 각 브랜치에서 작업을 하다가 어느 시점에서 브랜치 작업을 마무리하고,
기존 브랜치와 합하는 것
1) 여러 상황에 따라 병합하는 방법
2) 병합하면서 브래치 사이에 충돌이 있을 때 해결하는 방법에 대해 알아본다.
4-1. 서로 다른 파일 병합하기
o2 branch에서 작업이 다 끝났다면, o2 branch의 내용을 master branch로 병합해보자
4-2. 같은 문서의 다른 위치를 수정했을 때 병합하기
- 양쪽 브랜치에서 work.txt 문서를 수정하되 서로 다른 위치를 수정한 후 브랜치를 병합
4-3. 같은 문서의 같은 위치를 수정했을 때 병합하기
- 깃에서는 줄 단위로 변경 여부를 확인하기에
각 브랜치에 같은 파일의 이름을 가지고 있으면서, 같은 줄을 수정했을 때 병합하면
브랜치 충돌(branch conflict)이 발생한다.
<<... HEAD ~ ==... 까지(red box)는 master branch에서 수정한 내용
==... ~ >>... o2 까지(blue box)는 o2 branch에서 수정한 내용으로
양쪽 branch의 내용을 참고하여 직접 내용을 수정해야한다.
프로젝트 규모가 클수록 브랜치가 많기에 병합해야할 파일도 많아진다.
그래서 깃의 브래치 병합을 자동으로 처리해주고, 충동을 해결해주는 프로그램이 많다.
병합 알고리즘에는 2 way merge가 있고 3 way merge가 있는데,
3 way가 훨씬 효율적이므로 이를 지원해주는 프로그램을 선택하는 것이 좋다
프로그램 이름 | 설명 |
P4Merge | 무료, 직관적이며 사용이 편리하고 병합 기능이 뛰어남 (단축키 기능이 없음) |
Meld | 무료, 오픈 소스, 파일 비교뿐만 아니라 편집도 가능함 |
Kdiff | 무료, 사용이 편리하고, 병합 기능이 뛰어남 (한글이 깨져보일 수 있음) |
Araxis Merge | 유료, 그렇지만 용량이 큰 파일에서 잘 동작함 |
4-4. 병합이 끝난 브랜치 삭제하기
- 브랜치를 병합한 후 더 이상 사용하지 않는 브랜치는 깃에서 삭제할 수 있다.
그렇지만 완전히 지워지는 것이 아니라서, 다시 같은 이름의 브랜치를 만들면 예전 내용을 볼 수 있다.
- 즉, branch를 삭제한다는 것은 완전히 저장소에서 없애는 것이 아니라 깃의 흐름 속에서 감추는 것이다.
git branch -d (삭제하고자 하는 master에 병합된 브랜치 이름)
git branch -D (삭제하고자 하지만 master에 병합되지 않은 브랜치 이름) // 강제 삭제
'Git&GitHub > 이론&공부' 카테고리의 다른 글
[11일차] 깃허브로 백업하기 - 원격 저장소와 깃 허브 (0) | 2020.08.16 |
---|---|
[10일차] 깃과 브랜치 - 브랜치 관리하기 (0) | 2020.08.13 |
[8일차] 깃과 브랜치 - 브랜치 정보 확인하기 (0) | 2020.07.30 |
[7일차] 깃과 브랜치 - 브랜치(Branch)만들기 (0) | 2020.07.25 |
[6일차] 깃과 브랜치 - 브랜치(branch)란? (0) | 2020.07.22 |