3-way merge
기존에 우리는 이미 배운 내용이다.
2022.11.18 - [Language/Git] - [Git] git에서 branch 만들기, git merge
위와 같이 기본적으로 우리가 배운 방법이며
기존 branch
새로운 branch
두 가지를 각각 합치는 방법이다.
fast-forward merge
기존의 branch를 버리고
새로운 branch만 commit 하는 방식이다.
fast-forward merge를 하는 방법은
기준이 되는 main branch에 신규 commit이 없으면 자동으로 fast-forward merge가 된다.
위의 방법이 싫으면
git merge --no-ff 브랜치명
위의 명령어를 입력하여 강제로 3-way merge 하는 방법도 있다.
branch 삭제
위의 방법을 사용할 때 3-way나 fast-forward 방식은 새로 만든 branch나 기존의 branch를 삭제하진 않는다.
git branch -d 브랜치이름
git branch -D 브랜치이름
-d와 -D는 차이가 있다.
-d : 병합이 완료된 branch 삭제할 때
-D : 병합하지 않은 branch 삭제할 때
rebase and merge
rebase란 브랜치의 시작점을 다른 commit으로 옮기는 것이다.
위의 방식을 하는 방법은
1. rebase를 이용해서 신규 branch의 시작점을 main branch의 최근 commit으로 옮긴다.
2. fast-forward merge를 한다.
이러한 rebase merge를 하는 이유는
3-way merge 가 아닌 강제로 fast-forward 하고 싶을 때 한다.
명령어로 하는 방법은
git switch 새로운브랜치
git rebase main
git switch main
git merge 새로운브랜치
새로운 브랜치에서
main으로 rebase하고
main으로 바꿔서
새로운 브랜치를 merge 한다.
단점으로는, conflict가 자주 발생한다.
squash and merge
앞서 배운 방법으로 merge 하고 commit을 할 때
실제 프로젝트에서 작업할 때
대다수 branch들을 3-way merge를 하면
위의 이미지처럼 그래프가 상당히 지저분해지며 보기가 힘들어진다.
그 이유는
merge 하고 필요가 없어진 branch들도 모두
표시해주기 때문이다.
이러한 상황을 깔끔하게 해결할 수 있는 방법이
squash and merge이다.
git switch main
git merge --squash 브랜치명
git commit -m '메세지'
위의 명령어로 올릴 수 있다.
'Language > Git' 카테고리의 다른 글
[Git] git에서 branch 만들기, git merge (0) | 2022.11.18 |
---|---|
[Git] git 시작하기 2 / git diff / difftool (0) | 2022.10.11 |
[Git] Git 시작하기 1 /git init / add / commit / log / restore / status 명령어 (0) | 2022.10.10 |
[Git] readme.md 마크다운 언어 사용법 (0) | 2022.07.14 |
댓글