본문 바로가기
컴퓨터 활용/노년에 즐기는 코딩

[git] Git에서 Diverge 발생 시 해결 전략: Merge, Rebase 그리고 Fast-Forward

by easyfly 2024. 2. 20.
반응형

Git에서 Diverge 발생 시 해결 전략: Merge, Rebase 그리고 Fast-Forward

Git을 사용하다 보면 여러분의 로컬 브랜치와 원격 브랜치가 서로 다른 방향으로 발전해 'diverge'라는 상황에 직면할 수 있습니다. 이는 브랜치들이 고유한 커밋들을 가지고 있어서 자동으로 병합할 수 없는 경우를 의미합니다. 이러한 diverge 상황을 해결하기 위한 세 가지 주요 전략은 Merge, Rebase, 그리고 Fast-Forward입니다.

Git에서 Diverge 발생

Merge: git config pull.rebase false

  • Merge는 두 개의 브랜치를 하나의 병합 커밋으로 통합합니다.
  • 이 과정에서 두 브랜치의 커밋 히스토리가 모두 보존됩니다.
  • 병합된 커밋은 두 브랜치의 작업을 하나로 결합한 결과를 나타냅니다.
  • 히스토리가 복잡해질 수 있지만, 브랜치 간의 작업을 명확히 구분할 수 있는 장점이 있습니다.

Rebase: git config pull.rebase true

  • Rebase는 현재 브랜치의 커밋들을 기준 브랜치의 최신 커밋 뒤에 재배치합니다.
  • 이렇게 하면 커밋 히스토리가 선형적으로 정리되어 깔끔해집니다.
  • 이미 공유된 커밋 이력을 변경하기 때문에, 협업 시 주의가 필요합니다.
  • Rebase는 개인 작업이나 커뮤니케이션이 잘 이루어지는 작은 팀에서 유용합니다.

Fast-Forward: git config pull.ff only

  • Fast-Forward 병합은 로컬 브랜치가 원격 브랜치의 변경사항을 포함하고 있을 때만 가능합니다.
  • 로컬 브랜치의 헤드를 원격 브랜치의 최신 커밋으로 '앞당겨' 병합합니다.
  • 별도의 병합 커밋 없이 히스토리를 단순하게 유지할 수 있습니다.
  • diverge 상황에서는 사용할 수 없으며, 다른 전략을 고려해야 합니다.

정리

각 전략은 상황에 따라 그 적용성이 달라지므로, 협업 환경, 커밋 이력의 가독성, 그리고 프로젝트 관리의 우선순위에 따라 적절한 해결 전략을 선택해야 합니다. 이러한 전략들을 이해하고 적절히 적용함으로써, 여러분은 Git을 통한 협업과 버전 관리를 한층 더 효율적으로 진행할 수 있을 것입니다.

반응형

댓글