-
Merge 와 Rebase란?Git 2022. 7. 18. 00:01반응형
Merge란?
git merge
위의 명령어는 다른 브랜치를 현재 Checkout 된 브랜치에 Merge 하는 명령어입니다.
Merge 하고 나서 현재 브랜치가 Merge 된 결과를 가리키도록 옮깁니다.
Rebase란?
git rebase
위의 명령어도 마찬가지로 브랜치를 합치는 명령어입니다.
Merge와 Rebase의 실행결과는 같지만 커밋 히스토리가 달라집니다.
Rebase의 의미인 base를 새롭게 설정한다는 의미입니다.
초보자가 거리를 둬야 하는 명령어입니다.
Merge와 Rebase 비교
Merge부터 살펴보겠습니다.
https://www.atlassian.com/ko/git/tutorials/merging-vs-rebasing A개발자가 Feature 브랜치를 만들고 새로운 기능을 만들기 위해 열심히 작업을 하고 있습니다.
이 와중에 main 브랜치에는 다른 팀원들이 새 커밋으로 업데이트가 되고 있습니다.
이때 다음과 같은 명령어로 Main 브랜치와 Feature 브랜치를 통합할 수 있습니다.
git checkout feature git merge main
이때는 충돌이 날 수도 아닐수도 있습니다.
1) 충돌이 났다
git status
git status 결과 : code2.txt가 동시에 수정되었다는 의미입니다. 즉, code2.txt에서 충돌이 발생한 것입니다.
conflict난 파일에서 어느곳에서 났는지 알 수 있습니다. 충돌이 난 부분을 적절하게 수정하여 줍니다.
이후에 git commit -am "병합" 명령어를 통해 add와 commit을 동시에 진행할 수 있습니다.
위의 방법을 진행하면 충돌이 해결됩니다.
merge를 사용하면 다음과 같이 main 브랜치와 feature 브랜치가 평행적으로 움직이다가 합체됩니다.
병합완료 이제 Rebase를
merge를 사용하게 되면 가지가 뻗어나가고 그 가지들이 합쳐지는 방식으로 진행됩니다.
merge의 예시 다시 다음 그림을 예시로 살펴보겠습니다.
https://www.atlassian.com/ko/git/tutorials/merging-vs-rebasing 다음 명령어를 통해 feature 브랜치를 main 브랜치로 rebase 할 수 있습니다.
git checkout feature git rebase main
위의 명령어는 main 브랜치의 끝에서 시작하도록 전체 feature 브랜치를 이동하여 main에서 모든 새 커밋을 통합합니다.
즉, 가지들이 합쳐지는 것이 아니라 원래 하나였던 것처럼 보입니다.
rebase 이후 Rebase를 사용하는 이유는?
Merge를 통해 프로젝트를 진행하면 다음과 같이 진행됩니다.
https://studyandwrite.tistory.com/503 Merge를 한 브랜치의 모든 Commit기록이 남아있게 됩니다.
실제로 협업하는 관점에서 feature 브랜치에서 develop 브랜치에 병합하는 과정을 너무 당연하고 중요한 것은 각 feature에서 일어난 작업이 무엇인지를 알아야 합니다.
따라서 Rebase 전략을 사용한다면 다음과 같이 구성될 수 있습니다.
https://studyandwrite.tistory.com/503 Merge와 Rebase의 장단점(trade off)
merge는 이해하기 쉽다.
하지만 커밋 히스토리가 지저분하다.
rebase는 단순한 히스토리를 가진다.
하지만 충돌 상황에서 커밋 순서대로 rebase를 하기 때문에, 각 커밋마다 충돌 해소를 순서대로 해주어야 하기 때문에 충돌 상황을 해결하는 과정이 복잡합니다.
출처
Git - Branch와 Merge
git log 명령은 프로젝트 히스토리를 시간의 역순으로 보여준다. 넘겨준 Ref를 따라 히스토리를 보여주는데 Ref를 한 개가 아니라 여러 개 넘길 수도 있다. Ref를 넘겨 주지 않으면 HEAD가 가리키는 브
git-scm.com
https://velog.io/@kwonh/Git-Rebase%EB%9E%80
[Git] Rebase란?
안녕하세요!Git Reabse 에 관한 포스팅입니다.먼저 Rebase의 특징입니다.Git에서 한 브랜치에서 다른 브랜치로 합치는 방법은 Merge와 Rebase다.Merge와 Rebase의 실행결과는 같지만 커밋 히스토리가 달라진
velog.io
https://www.youtube.com/watch?v=Kh-m5mLedfs
https://studyandwrite.tistory.com/503
[Git] Rebase는 왜 쓰나
0. 들어가면서 아래와 같은 상황을 보겠습니다. 처음 시작점을 기준으로 Master가 두 번의 Commit을 한 뒤, 'feat' 이라는 브랜치(branch)를 생성했습니다. 그리고 브랜치가 생긴 시점(Base)으로부터 feat
studyandwrite.tistory.com
'Git' 카테고리의 다른 글
Git conflict rebase 하기 (0) 2022.10.13 Git 403 error 해결 방법 (0) 2022.09.28 Git 커밋 메시지 컨벤션 (0) 2022.06.20 Git branch 전략이란? (0) 2022.06.16 Git 특정파일 히스토리 삭제 (0) 2022.06.01