충돌 발생 후
Git rebase 명령어의 사용법과 주의사항, 그리고 실무에서의 활용법을 알아봅니다.
왜 Git Rebase를 사용해야 할까요?
① 깔끔한 커밋 히스토리 유지
Git을 사용하다 보면 브랜치를 여러 개 만들고, 각 브랜치에서 작업을 진행하게 되는데요. 이 과정에서 merge를 자주 사용하면 커밋 히스토리가 복잡해지고, 나중에 어떤 변경사항이 왜 적용되었는지 파악하기 어려워질 수 있어요. 마치 복잡하게 얽힌 스파게티 면처럼요!
rebase는 이런 문제를 해결해줍니다. rebase를 사용하면 마치 처음부터 해당 브랜치에서 작업한 것처럼 커밋 히스토리를 깔끔하게 정리할 수 있거든요.
② 협업 효율성 향상
커밋 히스토리가 깔끔하면 다른 개발자들이 코드를 이해하고 협업하는 데 훨씬 도움이 됩니다. 어떤 기능이 언제, 왜 추가되었는지 쉽게 파악할 수 있으니까요. 특히 오픈 소스 프로젝트처럼 많은 사람들이 참여하는 환경에서는 rebase를 통해 깔끔한 커밋 히스토리를 유지하는 것이 중요하다고 생각해요.
---
핵심 개념
| 항목 | 설명 |
|---|---|
| rebase | 다른 브랜치의 변경사항을 현재 브랜치에 적용하여 커밋 히스토리를 재작성하는 명령어 |
| merge | 두 개 이상의 브랜치 변경사항을 합치는 명령어 |
| 커밋 히스토리 | 프로젝트의 변경 이력을 나타내는 그래프 |
[main 브랜치] --- A --- B --- C
\
[feature 브랜치] --- D --- E
rebase를 사용하면 feature 브랜치를 main 브랜치에 기반하여 재작성합니다.
[main 브랜치] --- A --- B --- C
\
[feature 브랜치] --- D' --- E'
---
Git Rebase 사용법
① 1단계: 로컬 브랜치 업데이트
먼저, rebase할 대상 브랜치를 최신 상태로 유지해야 합니다. main 브랜치에서 rebase를 진행하려면 main 브랜치를 최신으로 업데이트해야 하는 거죠.
`bash
git checkout main
git pull origin main
② 2단계: Rebase 실행
이제 rebase를 실행할 차례입니다. feature 브랜치에서 main 브랜치를 기준으로 rebase를 진행하는 경우, 다음과 같이 명령어를 입력합니다.
`bash
git checkout feature
git rebase main
③ 3단계: 충돌 해결 (Conflict Resolution)
rebase를 진행하다 보면 충돌이 발생할 수 있습니다. 이는 main 브랜치의 변경사항과 feature 브랜치의 변경사항이 같은 파일을 수정했기 때문인데요.
충돌이 발생하면 Git은 충돌이 발생한 파일을 표시해줍니다. 해당 파일을 열어서 충돌 부분을 직접 수정하고, 수정한 파일을 add한 후 rebase --continue 명령어를 실행하면 됩니다.
`bash
git status # 충돌 발생 파일 확인
에디터로 충돌 파일 수정
git add <충돌 파일>
git rebase --continue
만약 충돌 해결이 어렵거나 rebase를 취소하고 싶다면, git rebase --abort 명령어를 사용하여 rebase를 중단할 수 있습니다.
④ 4단계: 원격 브랜치에 Push
rebase가 완료되면 로컬 브랜치의 커밋 히스토리가 변경됩니다. 따라서 원격 브랜치에 push할 때 -f 옵션을 사용해야 합니다. (force push)
주의: -f 옵션은 커밋 히스토리를 덮어쓰기 때문에, 다른 사람과 공유하는 브랜치에서는 사용하지 않는 것이 좋습니다. 협업하는 브랜치에서는 rebase 대신 merge를 사용하는 것이 안전합니다.
`bash
git push origin feature -f
---
자주 묻는 질문
Q: Rebase와 Merge, 어떤 것을 사용해야 할까요?
A: rebase는 커밋 히스토리를 깔끔하게 유지하는 데 유용하지만, 강제로 커밋 히스토리를 변경하기 때문에 협업 환경에서는 주의해서 사용해야 합니다. 개인 브랜치나, 혼자 작업하는 브랜치에서는 rebase를 사용하는 것이 좋지만, 다른 사람과 함께 작업하는 브랜치에서는 merge를 사용하는 것이 안전합니다.
Q: Rebase 과정에서 충돌이 너무 많이 발생해요. 어떻게 해야 할까요?
A: 충돌이 많이 발생하는 경우, rebase를 더 작은 단위로 나누어서 진행하거나, merge를 사용하는 것을 고려해볼 수 있습니다. 또한, 충돌이 발생한 파일을 꼼꼼하게 확인하고, 어떤 변경사항을 유지해야 할지 신중하게 결정해야 합니다.
---
마무리
git rebase는 깔끔한 커밋 히스토리를 유지하고 협업 효율성을 높이는 데 도움이 되는 강력한 도구입니다. 하지만 커밋 히스토리를 변경하기 때문에 사용에 주의해야 합니다. 개인적으로 저는 혼자 작업하는 브랜치에서는 적극적으로 rebase를 활용하고, 협업 브랜치에서는 merge를 사용하는 것을 선호합니다.
Rebase 사용 전 체크리스트:
- [ ]
rebase할 대상 브랜치를 최신 상태로 업데이트했나요? - [ ]
rebase과정에서 발생할 수 있는 충돌을 해결할 준비가 되었나요? - [ ] 협업 브랜치에서는
rebase대신merge를 사용하는 것을 고려했나요? - [ ]
-f옵션을 사용하여push할 때 주의해야 한다는 것을 알고 있나요?
이 글이 git rebase를 이해하고 사용하는 데 도움이 되었으면 좋겠습니다.
출처: 이 글은 다양한 Git 관련 자료를 참고하여 작성되었습니다. 구체적인 레퍼런스를 제공하기 어렵지만, Git 공식 문서와 여러 블로그 글을 참고했습니다.