Git Rebase 자세히 알아보기

두 개의 분기가 있고 별도의 구성원이 작업 중이고 한 분기에서 다른 분기로 변경 사항을 통합하려는 경우 병합 및 리베이스라는 두 가지 옵션이 있습니다. 이 두 명령은 매우 다른 방식으로 작동합니다. Merge는 다른 브랜치에서 변경 사항을 가져오고 해당 변경 사항을 포함하는 새 커밋을 브랜치로 만듭니다. 어떤 면에서 병합은 마치 우리가 스스로 변경하고 해당 변경 사항을 커밋한 것처럼 발생합니다. 그러나 병합은 로그의 기본 분기에서 참조를 유지합니다.

/// checkout the branch your are working and merge the branch with latest changes into it.
git checkout branch1
git merge branch2


그러나 Git rebase는 이를 다르게 수행합니다. 브랜치를 다른 브랜치로 리베이스하면 git은 브랜치의 전체 베이스를 새 커밋으로 변경합니다. 마치 다른 브랜치의 최신 변경 사항에서 작업을 시작한 것과 같습니다. 브랜치에서 모든 커밋을 가져 와서 새 브랜치에 하나씩 적용하기 시작하여 git 브랜치 히스토리를 수정합니다.

///  checkout the branch your are working and rebase the branch with latest changes into it.
git checkout branch1
git rebase branch2




왜 힘내 리베이스?



Rebase는 제대로 사용되지 않거나 제대로 이해되지 않는 작업입니다. 변경 사항을 병합할 수만 있다면 리베이스를 생각해야 하는 이유는 무엇입니까? 그러나 rebase에는 자체 용도가 있습니다. git rebase의 가장 중요한 장점 중 하나는 기록을 선형 방식으로 유지한다는 것입니다. rebase를 사용할 때 불필요한 분기가 없습니다. Git rebase를 사용하면 대화형 방식으로 커밋을 리베이스할 수도 있습니다. 이를 통해 다른 많은 작업을 수행할 수 있습니다.

힘내 Rebase 대화식



대화식 프롬프트로 리베이스하려면 다음 명령을 사용해야 합니다.

git rebase branch2 -i


대화식 리베이스를 통해 달성할 수 있는 일부 기능은 다음과 같습니다.
  • 여러 커밋을 단일 커밋으로 스쿼시할 수 있습니다
  • .
  • 일반적으로 git rebase는 모든 커밋을 적용합니다. 포함하고 싶지 않은 커밋을 건너뛰도록 선택할 수 있습니다.
  • git 기록에서 커밋이 발생하는 순서를 변경합니다.
  • 이전에 커밋된 변경 사항의 커밋 메시지 변경



  • 커밋의 일부만 리베이스



    특정 수의 커밋만 리베이스하려면 아래 명령을 사용하면 됩니다.

    git rebase branch2 -i HEAD~3
    


    이 명령은 이제 마지막 3개 커밋만 리베이스합니다.

    이들은 전체 브랜치에 영향을 미치는 몇 가지 매우 강력한 기능입니다. 우리는 조심해야 하고 rebase를 사용하는 것이 안전하다는 것을 알고 있을 때만 사용해야 합니다. git history를 변경하면 복구가 불가능합니다.

    git rebase를 사용하면 안 되는 경우



    일반적으로 자신만 작업하는 브랜치에서만 rebase를 사용하는 것이 좋습니다. 이 경우 rebase를 사용하는 것이 유용하며 불필요한 커밋으로부터 로컬 커밋 트리를 깨끗하게 유지하는 데도 도움이 됩니다. 그러나 PR을 제기한 후에는 커밋 트리를 변경하여 검토자에게 혼란을 줄 수 있으므로 더 이상 리베이스해서는 안 됩니다.
    명심해야 할 또 다른 사항은 공개 지점을 리베이스해서는 안된다는 것입니다. 많은 사람들이 작업하는 기능 분기를 리베이스해서는 안 됩니다. 이것은 현재 지점을 사용하는 사람들에게 많은 문제를 일으킬 것입니다. 따라서 공용 지점을 기반으로 리베이스하는 것은 좋은 생각이 아닙니다.

    좋은 웹페이지 즐겨찾기