git rebase는 Git에서 브랜치의 커밋 히스토리를 재정렬하거나 최신 상태로 업데이트할 때 사용되는 명령어입니다. 이 명령어는 주로 브랜치를 최신 상태로 유지하거나, 깔끔한 커밋 히스토리를 만들 때 유용합니다.

git rebase는 기존의 커밋을 "다른 브랜치의 최신 커밋 뒤에 재배치"하는 역할을 합니다.

기본적으로 git rebase 사용 방법:

  1. 브랜치 최신 상태로 유지 (git pull --rebase):
    git pull --rebase를 사용하면, 로컬에서 진행하던 작업을 원격 브랜치의 최신 커밋 뒤로 재배치할 수 있습니다. 예를 들어, main 브랜치의 최신 커밋을 가져오고 싶다면 다음 명령어를 사용합니다:

    git pull --rebase origin main

    이 명령어는 원격 저장소의 main 브랜치의 최신 커밋을 가져온 후, 로컬에서 작업한 변경 사항을 해당 커밋 뒤에 재배치합니다.

  2. 브랜치 간의 rebase:
    다른 브랜치의 최신 커밋을 내 브랜치로 가져와 최신 상태로 만들고 싶을 때 git rebase를 사용할 수 있습니다.

    git checkout feature-branch
    git rebase main

    위 명령어는 feature-branch에서 작업하던 내용을 main 브랜치의 최신 커밋 뒤에 재배치하여 feature-branchmain의 최신 커밋으로 업데이트합니다.

git rebase의 주요 특징:

  • 커밋 히스토리 깔끔: git merge는 병합 커밋을 생성하지만, git rebase는 새로운 병합 커밋을 만들지 않고 기존 커밋들을 최신 커밋 뒤로 재배치해 히스토리를 깔끔하게 유지합니다.
  • 충돌 해결: git rebase 중 충돌이 발생하면, 충돌을 수동으로 해결하고 git rebase --continue 명령으로 재배치를 계속할 수 있습니다.

git rebasegit merge의 차이

  • git merge: 두 브랜치를 병합할 때 추가적인 병합 커밋(merge commit)을 생성하여 병합의 이력을 남깁니다.
  • git rebase: 기존의 커밋들을 재배치하고 병합 커밋을 만들지 않으며, 깔끔한 히스토리를 유지합니다. 특히 다중 개발자 간 협업 시 로컬 작업을 최신 상태로 유지할 때 유용합니다.

git rebase 명령어 사용 예시:

  1. 로컬 브랜치 최신화 (rebase):

    git checkout feature-branch
    git rebase main
  2. 원격 브랜치 최신화 (pull --rebase):

    git pull --rebase origin main
  3. 충돌 해결 후 계속 진행:

    git rebase --continue
  4. 충돌 해결 중 중단하기:

    git rebase --abort

주의사항:

  • git rebase이미 원격에 푸시한 커밋에 대해 사용하면 안 됩니다. 이미 공유된 커밋의 히스토리를 변경하면 다른 개발자들이 혼란을 겪을 수 있기 때문입니다.
  • 안전하게 사용하려면 로컬 브랜치에서만 사용하는 것이 좋습니다.

git rebase는 Git에서 강력한 도구이지만, 사용 시 커밋 히스토리를 변경하므로 주의가 필요합니다.

반응형

+ Recent posts