개발관련/Git

Git에서 마스터 브랜치를 완전히 다른 브랜치에서 대체하는 방법

Rateye 2021. 12. 29. 11:21
728x90
반응형
질문 : Git에서 마스터 브랜치를 완전히 다른 브랜치에서 대체하는 방법은 무엇입니까?

내 Git 저장소에 두 개의 분기가 있습니다.

master 로 병합 할 의도로 seotweaks 를 만들었습니다. 그러나 그것은 3 개월 전이고이 브랜치의 코드는 master 보다 13 개 버전이 앞서 있습니다.

의 코드 모든 그것은 효과적으로 우리의 작업 마스터 지점이되었다 master 지금은 다소되지 않습니다.

내가 아는 아주 나쁜 연습, 교훈을 얻었습니다.

master 브랜치 seotweaks 에있는 콘텐츠로 대체 할 수있는 방법을 알고 있습니까?

master 에서 모든 것을 삭제하고 병합 할 수 있지만 이것이 모범 사례처럼 느껴지지 않습니다.

답변

"ours"병합 전략을 사용하여 마스터를 다음과 같이 seotweaks로 덮어 쓸 수 있어야합니다.

git checkout seotweaks
git merge -s ours master
git checkout master
git merge seotweaks

결과는 당신의 주인이 이제 본질적으로 섭약합니다.

( -s ours --strategy=ours 약자입니다)

'우리의'전략에 대한 문서 에서 :

이것은 수에 상관없이 헤드를 해결하지만 병합의 결과 트리는 항상 현재 분기 헤드의 트리이며 다른 모든 분기의 모든 변경 사항을 효과적으로 무시합니다. 사이드 브랜치의 오래된 개발 역사를 대체하는 데 사용됩니다. 이것은 재귀 병합 전략에 대한 -Xours 옵션과 다릅니다.

주석 업데이트 : 치명적일 경우 : refusing to merge unrelated histories , 두 번째 줄을 다음과 같이 변경합니다. git merge --allow-unrelated-histories -s ours master

출처 : https://stackoverflow.com/questions/2862590/how-to-replace-master-branch-in-git-entirely-from-another-branch
728x90
반응형