git rebase 3분 안에 이해하기
서론
안녕하세요 ! 이번에는 git의 핵심 중 하나인 rebase
에 대해 깊게 다뤄볼 것입니다. 이 포스트를 통해 rebase
와 관련된 기본부터 고급 기술까지 모두 파악하실 수 있을 거에요.
1. git rebase의 기본 개념
먼저, rebase
는 무엇인가요? rebase
는 글자 그대로 '다시 기반을 다지다'라는 뜻입니다. git에서는 두 가지 브랜치의 기반을 다시 다져주는 역할을 합니다.
다음과 같은 상황이 있다고 가정하겠습니다.
gitGraph
commit id: "C-1"
commit id: "C-2"
branch feature-branch
checkout feature-branch
commit id: "C-3"
checkout main
1.1. git merge와의 차이점
merge
와 rebase
의 가장 큰 차이점은 커밋 히스토리의 표현 방식입니다.
git checkout feature-branch
git merge master
gitGraph
commit id: "C-1"
commit id: "C-2"
branch feature-branch
checkout feature-branch
commit id: "C-3"
checkout main
merge feature-branch id: "C`"
1.2. rebase의 기본 사용법
만약 rebase
를 사용한다면 다음은 커밋 히스토리가 형성됩니다.
git checkout feature-branch
git rebase master
gitGraph
commit id: "C-1"
commit id: "C-2"
%% branch feature-branch
%% checkout feature-branch
commit id: "C-3"
%% checkout main
%% merge feature-branch id: "C`"
commit id: "C`"
2. rebase의 동작 원리
2.1. 작업 단계별 분석
- 현재 브랜치에서 작업한 커밋들을 임시 공간에 저장합니다.
- rebase할 대상 브랜치로 이동합니다.
- 임시 공간에 저장된 커밋들을 차례대로 적용합니다.
3. rebase 시 주의점
3.1. 공개 브랜치에서는 rebase를 사용하지 마세요
rebase는 히스토리를 재작성하기 때문에, 다른 사람과 공유하는 브랜치에서는 사용하지 않는 것이 좋습니다.
3.2. 충돌 발생 시
rebase 중 충돌이 발생하면 해결 후 git rebase --continue
를 사용하여 rebase를 계속 진행합니다.
# 충돌 해결 후
git add [파일명]
git rebase --continue
4. rebase는 왜 사용할까?
개발을 진행하며 코드를 합치는 방법은 여러 가지가 있지만, 그 중 merge
와 rebase
는 가장 대표적인 두 가지 방법입니다. 각각은 어떤 상황에 사용하며, 어떤 특징이 있는지 살펴보겠습니다.
4.1. Merge와 Rebase의 기본 개념
- Merge: 한 브랜치의 모든 변경 사항을 다른 브랜치에 한 번의 커밋으로 합치는 방법입니다.
- Rebase: 나의 브랜치의 시작점을 새로운 기점으로 이동시키는 것을 의미합니다.
4.2. 언제 어느 것을 사용할까?
- Merge의 사용 경우: 당신이 단일 기능을 개발하기 위해 브랜치를 생성했다고 가정해보겠습니다. 이러한 변경 사항을 master로 가져오고자 할 때,
merge
를 사용하면 좋습니다. - Rebase의 사용 경우: 개발을 시작한 후, 다른 개발자가 관련 없는 변경을 했을 경우, 저장소의 현재 버전을 기반으로 변경 사항을 다시 기반으로 하고자 할 때
rebase
를 사용하면 좋습니다.
마치며
마무리하며, git rebase는 사용법과 주의점을 잘 숙지하면 매우 강력한 도구가 될 수 있습니다. 꾸준한 연습과 이해를 통해 git 마스터가 되시길 바랍니다. 다음 시간에는 다른 git 주제로 여러분을 찾아뵙겠습니다. 화이팅! 🚀