본문 바로가기
Git & GitHub

Git Branch 합치기 실습

by danny-j 2022. 11. 24.

서로 다른 브랜치를 합치는 두가지 방식

  • 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 Branchmaster 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 Branchmster 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

댓글