중복 가능:
현재 Git 브랜치를 마스터 브랜치로 만들기
내 Git 저장소에 브랜치가 두 개 있습니다:
master
seotweaks
(원래 master
에서 생성됨)저는 seotweaks
를 master
에 빠르게 병합하려는 의도로 만들었습니다. 그러나 그것은 3개월 전의 일이고 이 브랜치의 코드는 master
보다 13개 버전이나 앞서 있습니다.
마스터`의 모든 코드는 이제 거의 쓸모없어졌기 때문에 이 브랜치가 사실상 우리의 작업 마스터 브랜치가 되었습니다.
제가 아는 아주 나쁜 습관입니다.
마스터브랜치의 모든 내용을
seotweaks`의 내용으로 대체할 수 있는 방법을 알고 계신가요?
마스터`에서 모든 것을 삭제하고 병합 할 수는 있지만 이것은 모범 사례처럼 느껴지지 않습니다.
병합 전략을 사용하여 마스터를 다음과 같이 시트위크로 덮어쓸 수 있어야 합니다:
git checkout seotweaks
git merge -s ours master
git checkout master
git merge seotweaks
결과적으로 마스터는 이제 기본적으로 시트위크가 됩니다.
(-s ours
는 --전략=우리
의 줄임말입니다.)
우리 전략에 대한 문서에서 발췌한 내용입니다:
이것은 헤드의 수에 관계없이 해결되지만 병합의 결과 트리는 항상 현재 브랜치 헤드의 트리이므로 다른 모든 브랜치의 모든 변경 사항을 효과적으로 무시합니다. 사이드 브랜치의 이전 개발 이력을 대체하는 데 사용하기 위한 것입니다. 이 옵션은 재귀 병합 전략의 -Xours 옵션과 다르다는 점에 유의하세요.
댓글에서 업데이트: '관련 없는 히스토리 병합 거부'라는 치명적인 오류가 발생하면 두 번째 줄을 다음과 같이 변경하십시오: git merge --allow-unrelated-histories -s ours master
.
git branch -m을 사용하여 마스터 브랜치의 이름을 다른 브랜치로 변경한 다음 seotweaks 브랜치의 이름을 마스터로 변경하는 것은 어떨까요? 이렇게 하면 된다:
git branch -m master old-master
git branch -m seotweaks master
git push -f origin master
**이렇게 하면 마스터 브랜치에 있는 커밋이 제거될 수 있으므로 git push -f master
를 실행하기 전에 마스터 브랜치를 확인하자.
원격에서 마스터의 이름을 바꾸거나 제거할 수 있지만, 많은 사람들이 원격 마스터 브랜치를 기반으로 작업하고 로컬 리포지토리에 해당 브랜치를 가져온 경우 문제가 될 수 있습니다.
여기서는 모두가 브랜치 '섯윅'에서 작업하는 것처럼 보이기 때문에 그렇지 않을 수 있습니다.
이 경우에는 가능합니다:
git remote --show가 작동하지 않을 수 있다.
(로컬 리포지토리 내에서 리모트가 어떻게 선언되었는지 확인하려면 git remote show
를 실행한다. 나는 원점
으로 가정한다).
(GitHub의 경우, house9의 코멘트: "한 가지 추가 단계를 수행해야 했는데, GitHub에서 관리자
버튼을 클릭하고 기본 브랜치
를 마스터
가 아닌 다른 것으로 설정한 다음 나중에 다시 넣어야 했습니다.")
git branch -m master master-old # rename master on local
git push origin :master # delete master on remote
git push origin master-old # create master-old on remote
git checkout -b master seotweaks # create a new local master on top of seotweaks
git push origin master # create master on remote
하지만 다시:
처음 만든 이후 '에서' 마스터 ',' 자오웨이크스 분기로 병합합니다 다시 좋은 생각이 있다. 그러나 경우 중 하나에 있지 않은 상황에서 '마스터' 또는 '에서 진짜 분기로의 분기로서의 싶은 당신의 역사에 차이가 있어' 마스터 '이 있는 제압하십시오 찬성하는 분기로의 새 분기로의 you& # 39 에 있는, ve been 일을 함으로써 이 작업을 수행할 수 있습니다.
git push [-f] origin seotweaks:master
이는 특히 도움됐네 나오면 이 오류:
! [remote rejected] master (deletion of the current branch prohibited)
git push origin :master
내가 찾은 이 수행할 수 있는 최선의 방법은 (전 그 날 수 있도록 내 서버에 문제가 아니라 삭제하시겠습니까).
그 다음 '에서' 리포지토리를 호스팅하는 서버에 mm_mail_doc. 내부를 디렉터리입니다 리포지토리를:
git config receive.denyDeleteCurrent ignore
찾습니다.
git branch -m master vabandoned # Rename master on local
git branch -m newBranch master # Locally rename branch newBranch to master
git push origin :master # Delete the remote's master
git push origin master:refs/heads/master # Push the new master to the remote
git push origin abandoned:refs/heads/abandoned # Push the old master to the remote
'Back on the origin' 리포지토리를 호스팅하는 서버에.
git config receive.denyDeleteCurrent true
Http://www.mslinn.com/blog/? p = 772 credit 을 쓴 블로그 포스트