티스토리 뷰

Git

[Git] - merge, squash merge, rebase marge 이해하기

영지는 달리는중 2020. 9. 8. 15:48

Merge와 Rebase의 차이점

 

Master에서 bts-image 브랜치를 생성하여 2번의 커밋을 하였고 그 동안 Master에서도 한번의 커밋이 이루어져있는 상태인 경우

 

 

git merge bts-image를 실행하였을 때

  • bts-image 브랜치는 그동안의 모든 커밋 로그를 유지한 채 master의 Head에 새로 추가된다

git rebase bts-image를 실행하였을 때

  • bts-image 브랜치를 베이스로 그동안의 모든 커밋을 재정렬한다

    • 같은 커밋 메세지여도 rebase를 할 경우 master 커밋 트리 중간에 재정렬되어진다

보통 Master에 작업 내용을 병합할 때 Squash merge를 사용하여 커밋로그를 깨끗하게 관리한다

하지만 모든 커밋 하나하나가 master에 정리되어 있길 원한다면 rebase를 사용하는 것이 바람직하다

 

브랜치 병합의 종류 - Create a merge commit / Squash and Merge / Rebase and Merge

  • Create a merge Commit
    • 작업한 브랜치에 대한 커밋들을 포함한 새로운 커밋을 만드러 머지 대상 브랜치에 추가한다
  • Squash and Merge
    • 작업한 브랜치에 대한 커밋들을 합쳐 새로운 커밋으로 만들고 머지 대상 브랜치에 추가한다
  • Rebase and Merge
    • 작업한 브랜치에 대한 커밋들을 각각 머지 대상 브랜치에 재정렬하여 추가한다

마무리 

rebase and merge를 하면 모든 커밋이 각각 머지 대상 브랜치에 재정렬되어 추가되고,create a merge commit를 사용하면 머지 대상 브랜치의 head에 커밋들이 포함된 새로운 커밋이 만들어져 추가된다

 

보통 develop <- feature 브랜치를 병합할 경우 feature 브랜치의 지저분한 커밋이력정리를 위해 Squash and merge 사용

Master <- develop 브랜치를 병합할 경우 별도의 새로운 커밋을 생성할 이유가 없으므로(이미 정리되어있음) rebase and merge 사용

한다고 알고있고 나 또한 팀원들과 이러한 방식으로 git을 사용중이다 

 

참고 블로그

'Git' 카테고리의 다른 글

[Git] - .gitignore 변경 반영  (0) 2020.10.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함