merge
- Fast-forward
- 3-way Merge
- Squash and Merge
Fast-forward
- 현재 브랜치의 head를 목표 브랜치의 head(최신)까지 이동시킴
- 별도의 merge commit이 발생 x
3-way Merge
c5가 c3, c4를 가리키며 merge되었다.
Squash and Merge
git merge --squash 브랜치명
위 그림에서 my-feature branch는 커밋이 여러 개라도 squash merge를 하면 커밋이 한 개로 merge된다.
develop과 feature 브랜치 간의 머지에 추천
rebase
한 브랜치에서 변경된 사항을 다른 브랜치에 적용
직관적(선형적), 활용성이 높지만 사용이 어려움
커밋의 구조를 바꾸기 때문에 원격저장소를 통한 협업시 잘못 사용하면 커밋 히스토리가 상당히 복잡해짐
로컬 브랜치 내에서 히스토리 정리할 때만 사용하는 것을 권장
rebase는 과거 커밋을 정리하는 용도로 활용 가능
main과 develop 브랜치간의 머지에 추천
git checkout experiment
git rebase master
git checkout master
git merge experiment
c'4의 변경사항이 c3에 적용되고 master 브랜치를 Fast-forward함
참고 👇
https://backlog.com/git-tutorial/kr/stepup/stepup1_4.html
https://learn.microsoft.com/en-us/azure/devops/repos/git/merging-with-squash?view=azure-devops
https://meetup.nhncloud.com/posts/122
반응형
'git' 카테고리의 다른 글
Please commit your changes or stash them before you switch branches.Aborting (0) | 2023.02.26 |
---|---|
Git ^M 문자 제거 (0) | 2023.01.27 |
[git] branch (0) | 2023.01.09 |
[Git] fatal: refusing to merge unrelated histories (0) | 2023.01.06 |
HEAD detached (0) | 2022.02.06 |