티스토리 뷰
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 |
---|