저는 새 브랜치에서 새로운 기능을 개발해 왔으며, 한편으로는 마스터 브랜치에서 꽤 많은 변경 사항을 커밋했습니다.
새 기능이 완료되면 병합 충돌이 너무 많이 발생하지 않도록 마스터 분기를 새 분기에 병합하여 최신 상태로 유지할 수 있습니까?
답변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 feature
as를 통해 도달할 수 있습니다 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 feature
Branch 에 있는 경우 master
다음과 같습니다.
A---B---C feature A---B---C feature
/ --merge--> / \
D---E---F---G master D---E---F---G---M master