서로 다른 브랜치를 합치는 두가지 방식
- merge -- 두 브랜치를 한 커밋에 이어붙임
- 브랜치 사용내역을 남길 필요가 있을 때 적합한 방식
- rebase -- 브랜치를 다른 브랜치에 이어붙임
- 한 줄로 깔끔히 정리된 내역을 유지하기 원할 때 적합
- 이미 팀원과 공유된 커밋에는 사용하지 않는 것이 좋음
합치기 전
- Branch는 총 3개
- master
- add-coach
- new-teams
- master Branch 변경사항
- Leopards.yaml 파일 -- members에 Olivia 추가
- Panthers.yaml 파일 -- members에 Freddie 추가
- add-coach Branch 변경사항
- Tigers.yaml 파일 -- coach에 Grace 추가
- Leopards.yaml 파일 -- coach에 Oscar 추가
- Panthers.yaml 파일 -- coach에 Teddy 추가
- new-teams Branch 변경사항
- pumas.yaml 파일 추가
- jaguars.yaml 파일 추가
터미널 창에서 여러 Branch의 내역 보기
- git log --all --decorate --oneline --graph
- 너무 길어서 alias로 설정
- git config --global alias.ladog 'log --all --decorate --oneline --graph'
- git ladog 으로 Branch 내역 조회 가능
merge로 합치기
git merge add-coach
- add-coach Branch를 master Branch로 merge
- master Branch로 이동
- 위의 명령어로 병합
- :wq 로 자동입력된 커밋 메시지를 저장하여 마무리
- merge는 reset으로 되돌리기 가능
- merge도 하나의 커밋
- merge하기 전 해당 브랜치의 마지막 시점으로
병합된 Branch 삭제
git branch -d add-coach
- 삭제 전 소스트리에서 add-coach Branch의 위치 확인
- 같은 위치에 있을 것
merge 결과 확인
rebase로 합치기
git rebase main
- new-teams Branch를 mster Branch로 rebase
- new-teams Branch로 이동
- 위의 명령어로 병합
- merge 할 때와 Branch 위치가 반대
rebase 결과 확인
- 위와 같이 rebase로 합쳤지만 master Branch의 마지막 커밋에 붙여줬으므로 master Branch가 뒤에 있음
master Branch로 이동 후 new-teams의 시점으로 fast-forward merge
- fast-forward merge -- 현재 Branch의 HEAD가 대상 Branch의 HEAD까지로 옮기는 merge
- Fast-Forward 관계란 쉽게 말해서 자손관계 여부
- 이러한 관계에서는 merge 커밋이 추가적으로 생기지 않고 조상 commit을 따라가기만 함
- merge를 하였지만 사실상 rebase된 것과 같음
- merge 후 new-teams Branch 삭제
결과
Success
'Git & GitHub' 카테고리의 다른 글
Git 원격 저장소 (0) | 2022.11.29 |
---|---|
충돌 해결하기 (0) | 2022.11.29 |
Git Branch (0) | 2022.11.22 |
Git에서 과거로 돌아가는 두 방식 / 커밋 삭제 (0) | 2022.11.22 |
.gitignore (0) | 2022.11.22 |
댓글