Git Rebase vs Merge Explained Visually | Which One Should You Use?
- Git Merge는 두 브랜치를 결합하여 새로운 병합 커밋을 생성하며, 기존 커밋 ID와 히스토리를 그대로 보존합니다. 🤝
- Merge의 장점은 히스토리의 무결성을 유지하는 것이지만, 단점은
git log --oneline --graph로 볼 때 복잡하고 얽힌 히스토리(tangled tree)를 만들 수 있다는 점입니다. 🌳
- Merge 시 충돌은 병합 커밋에서 한 번만 해결하면 됩니다. 🛠️
- Git Rebase는 현재 메인 브랜치 위에 자신의 커밋들을 재배치하여 선형적인 히스토리를 만듭니다. 📏
- Rebase는 기존 커밋을 새로운 커밋 ID로 다시 생성하여 히스토리를 재작성하며, 이는 공유된 브랜치에서는 안전하지 않습니다. ⚠️
- Rebase의 장점은 깔끔하고 읽기 쉬운 선형 히스토리로, 디버깅과 추적이 용이하다는 것입니다. ✨
- Rebase 시 충돌은 Git이 커밋을 하나씩 재적용할 때마다 각 커밋에서 해결해야 할 수 있습니다. 🔄
- 공유 브랜치에서 협업할 때는 히스토리 보존과 안전을 위해 Merge를 사용하는 것이 권장됩니다. 👥
- PR(Pull Request)을 열기 전에 로컬 커밋을 정리하고 깔끔한 히스토리를 만들려면 Rebase를 사용하는 것이 좋습니다. 🧹
- 공개된 브랜치를 Rebase하는 것은 팀원들과 조율 없이는 심각한 문제를 야기할 수 있으므로 피해야 합니다. 🚫
- 원격 저장소에서 변경 사항을 가져올 때 병합 커밋을 줄이려면
git pull --rebase를 활용할 수 있습니다. ⬇️
- Merge와 Rebase 중 어떤 것을 사용할지는 팀의 워크플로우와 히스토리의 명확성 또는 안전성 중 무엇을 더 중요하게 여기는지에 따라 달라집니다. 🤔