강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

yuntae.kang님의 프로필 이미지
yuntae.kang

작성한 질문수

Git & GitHub, 원리부터 차근차근 - 근본깃 [완성편]

리베이스할 때 conflict 해결하기 #conflict #rebase ★

rebase 와 3-way merge 의 근본적인 차이

작성

·

19

0

안녕하세요.

rebase 단원(이전 강의)의 설명을 들으면서, rebase 란 fast-forward merge 를 수행할 수 있게끔 commit history 를 flatten 해 주는 작업으로 이해했는데요.

rebase 과정에서도 conflict 가 발생하고, 이것을 처리해줄 필요가 있다면, 그냥 3-way merge 에서 conflict 를 처리하는 것과 근본적인 차이가 있을까요?

제 생각으로는 rebase 과정에서는 branch 에서 떨어져 나간 commit 들이 생기고, 3-way merge 에서는 기존 commit 들이 병합된 branch 안에 들어있다, 는 차이 정도밖에 없는 것 같은데요.

굳이 3-way merge 말고 rebase 를 사용해야 할 필요가 있을까요?

답변 2

0

geek님의 프로필 이미지
geek
지식공유자

안녕하세요, yuntae.kang 님 😀

rebase는 동료와 협업할 때 특히 유용합니다.
왜냐하면 커밋 히스토리를 단순하게 유지할 수 있기 때문이에요.

이에 대한 내용은 "동료와 협업할 때 conflict 해결하기 #github #rebase" 회차를 참고해주세요!

0

안녕하세요, 인프런 AI 인턴입니다. yuntae.kang님, Rebase와 3-way merge의 차이에 대해 질문주셨군요.

Rebase와 3-way merge의 근본적인 차이

  1. Rebase:

    • 목적: 커밋 히스토리를 아우르며 변경사항들을 병합하여, 히스토리를 “평탄하게” 만듭니다. 커밋의 히스토리가 마치 단일 브랜치에서 개발된 것처럼 보이도록 합니다.
    • 특징: 원래 커밋 히스토리를 재구성하여 하나의 직선 형태로 만들어 줍니다. 이 과정에서 충돌이 발생하면 수동으로 해결해줘야 합니다. rebase 후, 브랜치는 최신 커밋을 가리키게 되는 특징이 있습니다.
    • 사용 사례: 히스토리를 모던하고 깔끔한 형태로 유지하고 싶을 때, 협업에 있어 각각의 커밋이 각각의 변경 사항을 잘 표현해주는 경우에 유리합니다.
  2. 3-way merge:

    • 목적: 두 개의 기능 브랜치를 병합하여, 새로운 커밋을 생성하는 방식입니다. 서로 다른 브랜치의 작업이 결집되어 하나의 브랜치로 만들어집니다.
    • 특징: 원래의 브랜치 히스토리를 그대로 보존하면서 이력을 병합합니다. 중간에 공통 조상 커밋(Base Commit)을 통해 병합하여 충돌을 해결합니다.
    • 사용 사례: 각 브랜치의 개발 흐름을 명확히 유지하고 싶을 때, 직접적인 병합이 필요할 때 사용합니다.

Rebase의 필요성

  • 클린한 히스토리: 많은 개발자는 간결하고 이해하기 쉬운 기록을 보존하기 위해 rebase를 선호합니다. 브랜치를 기반으로 한 다양한 개발 상황에서 전체 히스토리를 일목요연하게 유지할 수 있습니다.
  • 리베이스는 재배치: 브랜치를 다시 배치하여 동적 이력을 생성할 수 있습니다. 따라서 기능 브랜치를 master에서 이어진 것처럼 다양한 곳에서 적용할 수 있습니다.

유사 질문과 추가 참고 자료

Rebase와 Merge에 관한 자세한 설명과 예제를 이해하시려면 아래 링크를 참조하시기 바랍니다:
- Git Rebase 과정 설명 및 충돌 해결

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

yuntae.kang님의 프로필 이미지
yuntae.kang

작성한 질문수

질문하기