하루살이 개발일지

[Github] Merge와 Rebase의 개념 이해하기 본문

Git/Github

[Github] Merge와 Rebase의 개념 이해하기

harusari 2023. 6. 18. 20:07

Rebase: git rebase는 한 브랜치의 변경 사항을 다른 브랜치 위에 '재배치(rebase)'하는 것입니다. 이는 커밋들의 베이스를 이동시키는 것을 의미합니다. 이 방법을 사용하면 여러 브랜치에 걸쳐 발생한 커밋들을 순서대로 하나의 선형적인 브랜치로 합칠 수 있습니다. 이렇게 하면 커밋 히스토리를 깨끗하게 유지할 수 있습니다. 하지만 이렇게 하면 기존의 커밋 이력이 변경되므로, 협업 중인 브랜치에서는 주의해서 사용해야 합니다.

 

 

Merge: git merge는 두 브랜치를 합치는 동작을 수행합니다. merge가 발생하면 Git은 두 브랜치의 공통 조상을 찾아, 이 브랜치들의 변경 사항을 모두 적용한 새로운 커밋(머지 커밋)을 만듭니다. 이 방법을 사용하면 커밋의 순서와 상관없이 두 브랜치의 변경 사항을 모두 포함할 수 있습니다. 그러나 이렇게 하면 여러 브랜치의 커밋들이 섞여서, 커밋 히스토리가 복잡해질 수 있습니다.

 

 

두 개의 차이점 : git merge와 git rebase는 Git에서 제공하는 두 가지 다른 브랜치 결합 방법입니다. 주요 차이점은 커밋 히스토리를 어떻게 다루는지에 있습니다.

 

**git merge**는 브랜치를 결합하는 가장 일반적인 방법입니다. 이를 사용하면 두 브랜치의 커밋 히스토리를 모두 유지하며, 두 브랜치의 변경 사항을 병합하는 새로운 "merge 커밋"을 생성합니다. 이 방법은 브랜치의 독립성을 유지하면서도 특정 시점에서의 변경 사항을 합칠 수 있어서, 대부분의 경우에 잘 작동합니다.

 

**git rebase**는 다른 접근 방식을 취합니다. rebase는 한 브랜치의 커밋들을 취하고, 이를 다른 브랜치 위에 "재배치(rebase)"합니다. 이렇게 하면 커밋 히스토리가 선형적으로 보이게 됩니다. 이 방법은 히스토리를 깨끗하게 유지할 수 있지만, 원래의 커밋 히스토리를 수정하는 것이므로, 협업하는 다른 사람들에게 혼란을 줄 수 있습니다.

그러므로, 어떤 방법을 사용할지는 상황에 따라 달라집니다:

  • 여러 사람이 동일한 브랜치에 작업하고 있거나, 복잡한 브랜치 구조를 유지하려는 경우에는 merge를 사용하는 것이 좋습니다.
  • 단일 개발자가 작업하거나, 깨끗하고 선형적인 히스토리를 선호하는 경우에는 rebase 사용하는 것이 좋습니다. 그러나 방법은 커밋 히스토리를 변경하기 때문에, 공유 브랜치에는 주의해서 사용해야 합니다.