리베이스

리베이스

저는 새 브랜치에서 새로운 기능을 개발해 왔으며, 한편으로는 마스터 브랜치에서 꽤 많은 변경 사항을 커밋했습니다.

새 기능이 완료되면 병합 충돌이 너무 많이 발생하지 않도록 마스터 분기를 새 분기에 병합하여 최신 상태로 유지할 수 있습니까?

답변1

다음 중 하나를 수행할 수 있습니다.git merge master또는git rebase master.

지점이 다른 사람에게 배포되지 않은 경우 이 경우에는자식 리베이스.

git rebase마치 마스터 브랜치의 변경 사항 위에 기능 브랜치의 변경 사항이 적용된 것처럼 만들어 버전 그래프가 더 단순해지기 때문입니다 .

리베이스

의 예를 들어보면git 리베이스 매뉴얼, git rebase master지점에서 feature:

      A---B---C feature                             A'--B'--C' feature
     /                   --rebase-->               /
D---E---F---G master                  D---E---F---G master

그러나 git rebase이전 커밋 A, B, C가 이제 새 커밋 A', B', C' 및 F로 대체되기 때문에 아무도 작업하지 않거나 혼란과 추가 작업이 있을 때만 적합합니다. 그리고 이전에는 없었던 G.

git rebase master분기 후 실제 결과는 feature다음과 같습니다.

      ( A---B---C ) feature@{1}
       /
      /       A'--B'--C' feature
     /       /
D---E---F---G master

커밋 A, B, C는 리베이스 이후에 매달려 있지만 git reflog featureas를 통해 도달할 수 있습니다 feature@{1}.

병합

누군가가 여러분의 브랜치를 가져왔거나 여러분이 어딘가에 밀어넣었다면, 대신에 브랜치에 병합하여 반대편에서 혼란과 추가 작업을 피해야 합니다. 보다업스트림 리베이스에서 복구 중.

git merge master이것은 분기 의 결과입니다 feature.

      A---B---C feature                    A---B---C---M feature
     /                   --merge-->       /       ,---’
D---E---F---G master                 D---E---F---G master

또는 git merge featureBranch 에 있는 경우 master다음과 같습니다.

      A---B---C feature                    A---B---C feature
     /                   --merge-->       /         \
D---E---F---G master                 D---E---F---G---M master

관련 정보