답변:
당신도 할 수 있습니다 git merge master
또는 git rebase master
,이 경우 내가 선호하는 자식 REBASE를 .
git rebase
피처 브랜치의 변경이 마스터 브랜치의 변경을 기반으로 한 것처럼 보이기 때문에 버전 그래프가 더 단순 해집니다.
로부터의 예를 촬영 자식 REBASE 설명서 , 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를 더한 F로 대체되므로 분기가 분배되지 않았거나 다운 스트림 혼란과 추가 작업이있을 때에 만 적합합니다. 그리고 전에는 없었던 G.
git rebase master
분기 후 실제 결과 feature
는 다음과 같습니다.
( A---B---C )
/
/ A'--B'--C' feature
/ /
D---E---F---G master
커밋 A, B, C는 리베이스 이후 매달려 git reflog feature
있습니다.
누군가가 지점을 가져 왔거나 어딘가에 밀어 넣은 경우 다른 쪽 끝에 혼란과 추가 작업을 피하기 위해 대신 지점으로 병합해야합니다. 업스트림 리베이스에서 복구를 참조하십시오 .
이것은 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
git rebase master
하면 기능 분기의 변경 사항을 "리베이스"하여 마스터 분기의 변경 사항을 "기반으로"합니다. 마스터 브랜치의 변경 사항이 기능 브랜치의 변경 사항과 충돌하면 git은이를 해결하고 계속하거나 건너 뛰거나 중단하도록 요청합니다. 확실하지 않은 경우 테스트 브랜치를 체크 아웃하여 시험해 볼 수 git checkout -b test-feature feature
있습니다 (기능 브랜치의 이름이 "기능"이라고 가정).
git rebase
지점이 배포되지 않은 경우에만 사용해야합니다. 새로운 지점이라고 말한 이후의 경우라고 가정했습니다. 죄송합니다. 내가 연결된 문서 에서 업스트림 리베이스 에서 복구를 참조하십시오 . git merge
대신 사용해야 합니다. git reflog
다시 가져 오려면 이전 피처 분기 헤드를 찾는 데 사용할 수 있습니다 .