git rebase vs git merge
git merge
예를 들어 main브랜치가 있고 feature브랜치가 있다고 가정하자. feature브랜치에 main브랜치를 merge를 하고 싶을 경우 우선 git checkout feature 명령어를 이용해 현재 브랜치를 바꿔주고 main브랜치(git merge main)를 머지한다. 이렇게 되면 기존의 마지막 feature브랜치 가지들도 살아있으면서 새feature브랜치와 main브랜치의 내용을 모두 담고 있는 새로운 커밋을 생성한다.
git rebase
위와 똑같은 상황이라 가정하고 feature브랜치에 main브랜치를 머지한다 해보자. git checkout feature, git rebase main 명령어를 실행한다. 이 명령어를 실행할 경우 위의 명령어를 실행할 때와 다르게 feature브랜치의 커밋들이 마지막 메인 브랜치 앞에 이동하고, 브랜치 마지막에는 병합된 내용을 갖고 있는 새로운 브랜치가 생성된다. git merge와 달리 브랜치 가지가 하나로 깔끔하게 병합된다.
이때 기존에 feature브랜치에 있던 커밋들은 임시저장소에 저장되고 main브랜치에 병합하게 된다. 이때 다른 두 브랜치가 병합될 때 충돌이 일어날 경우 불러오지 않고 임시저장소에 저장하고 있다가 충돌이 해결하고 git rebase --continue 명령어를 통해 임시저장소에 있던 커밋 내용과 병합을 재시도한다.
참조
지옥에서 온 Git
'TIL' 카테고리의 다른 글
[TIL] 이벤트 버블링? (0) | 2024.01.23 |
---|---|
자바스크립트의 비동기 처리 (0) | 2024.01.12 |
Git tag (0) | 2023.10.02 |
Git 원격저장소 (0) | 2023.10.01 |