programing

Git의 마스터 브랜치를 다른 브랜치에서 완전히 대체하려면 어떻게 해야 하나요?

subpage 2023. 4. 24. 23:13
반응형

Git의 마스터 브랜치를 다른 브랜치에서 완전히 대체하려면 어떻게 해야 하나요?

Git 저장소에는 다음 두 개의 브랜치가 있습니다.

  1. master
  2. seotweaks(원래 작성원master)

작성했습니다.seotweaks그것을 재빨리 다시 합칠 생각으로master단, 그것은 3개월 전의 것으로, 이 브랜치내의 코드는, 다음의 13 버전입니다.master.

모든 코드와 마찬가지로 사실상 델의 작업 마스터 브랜치가 되었습니다.master지금은 거의 구식이 되었다.

아주 나쁜 습관인 걸 알아, 교훈을 얻었지.

이 모든 내용을 대체하려면 어떻게 해야 하는지 아세요?master에 종사하는 사람들과 분기하다seotweaks?

에 있는 모든 것을 삭제할 수 있습니다.master통합은 하지만 이는 베스트 프랙티스가 아닌 것 같습니다.

마스터를 다음과 같이 seotweak으로 덮어쓰려면 "당사의" 병합 전략을 사용할 수 있어야 합니다.

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

처음 두 단계는 마스터의 로컬 복사본을 최신 상태로 유지하는 데 유용한 예방 조치입니다.그 결과, 당신의 주인은 이제 근본적으로 뱃멀미를 하게 될 것입니다.

(-s ours의 줄임말이다--strategy=ours)

'당사' 전략에 대한 문서:

이렇게 하면 임의의 수의 헤드가 해결되지만 Marge의 결과 트리는 항상 현재 브런치헤드의 트리가 되어 다른 브런치로부터의 변경은 모두 실질적으로 무시됩니다.이는 곁가지의 오래된 개발 이력을 대체하기 위해 사용됩니다.이것은 -Xours 옵션과 재귀 병합 전략과는 다릅니다.

코멘트에서 갱신:치명적일 경우:refusing to merge unrelated histories두 번째 행을 다음과 같이 변경합니다.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 origin master.

리모트로 마스터의 이름을 변경하거나 삭제할 수 있지만, 많은 사용자가 리모트 마스터 브랜치를 기반으로 작업을 하고 로컬 리포에서 해당 브랜치를 풀한 경우 문제가 됩니다.
여기에서는 그렇지 않을 수도 있어요.다들 지점에서 일하고 있는 것 같으니까.seotweaks'.

이 경우 다음 작업을 수행할 수 있습니다.
git remote --show가 동작하지 않을 수 있습니다.(를 사용하여 로컬리포 내에서 리모트가 어떻게 선언되어 있는지 확인합니다.'라고 가정하겠습니다.origin ' )
(GitHub에 대해 house9 코멘트: "한 단계를 더 진행해야 했습니다.Admin에서 '을 클릭하여 'GitHub을 설정합니다.Default Branch에서 '보다가 다른 것master', ', then put it back afterwards")'그 후 다시 붙여주세요')

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

하지만 다시 한 번:

  • 원격에서 마스터를 삭제하려고 하면, 그들은 pulls will 마 if 삭 사 실 가 은 풀 는 하, is자 fail 려 패 try users remote용면 on masterno such ref on remote")")
  • 언 언제?master원격에서 다시 다시 다시 다시 다시 생성하려고 합니다. 작 로 지 도 은 를 will시, is다머 that on remote새 to attempt recreated new pull풀니 a재합운어 merge되성master그들의 지역(, ) )현컬 on에 old오 local ()된 their서래는재now)master: 많은 갈등은 다음과 같습니다. 경합이 많다. 그들은 필요한 이 있다.reset --hard the the 의 로컬 마스터remote/master의 브랜치, 현재의 브랜치 .master.

업데이트/주 2022:

  • master는 nowodays라고 요?main
  • Git 체크 아웃은 Git 2.23 (2019년 3분기) 이후 폐지되었습니다.브런치 조작에 사용.
    git branch -m main main-old  # rename main on local
    git push origin :main          # delete main on remote
    git push origin main-old       # create main-old on remote
    git switch -c main seotweaks # create a new local main on top of seotweaks
    git push origin main           # create main on remote

★★seotweaks원래 브런치로서 작성되었습니다.master하다단, 지점 중 하나가 실제 지점과 다른 경우master 예요.master지금까지 작업해 온 새로운 브랜치를 지지하는 브랜치에서는, 다음과 같은 작업을 실시할 수 있습니다.

git push [-f] origin seotweaks:master

이것은, 다음의 에러가 발생했을 경우에 특히 도움이 됩니다.

! [remote rejected] master (deletion of the current branch prohibited)

또한 GitHub를 사용하지 않고 "관리" 탭에 액세스하여 원격 저장소의 기본 분기를 변경할 수 없습니다.또한 마스터를 삭제하여 발생할 수 있는 다운타임이나 레이스 상태는 발생하지 않습니다.

git push origin :master

이것이 최선의 방법이라는 것을 알았습니다(서버에서 삭제를 허가하지 않는 문제가 있었습니다).

「」를 하는 서버.origin리포지토리 내의 디렉토리에서 다음을 입력합니다.

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

origin★★★★★★★★★★★★★★★★★★:

git config receive.denyDeleteCurrent true

블로그 게시물 작성자 http://www.mslinn.com/blog/?p=772에게 크레딧

언급URL : https://stackoverflow.com/questions/2862590/how-to-replace-master-branch-in-git-entirely-from-another-branch

반응형