Git 'master'브랜치의 이름을 'release'로 바꾸려면 어떻게해야합니까?


115

우리는 프로젝트에 대해 마스터 브랜치를 릴리스 브랜치라고 부르는 새로운 정책을 시행하여 브랜치가 어떻게 사용되어야하는지 더 명확하게하고 싶습니다. 당연히 후보 브랜치도 개발 및 출시 할 예정입니다.

다음을 사용하여 로컬에서 마스터 브랜치의 이름을 바꿀 수 있음을 이해합니다.

git branch -m master release

그러나 이는 로컬에만 해당됩니다. 이것을 원격으로 밀어도 HEAD는 여전히 원격 마스터 브랜치를 가리 킵니다. 마스터 브랜치를 완전히 제거하고 초기 복제시 기본 로컬 브랜치를 릴리스로 만들고 싶습니다.

이것을 어떻게 할 수 있습니까?

오리진이 Gitorious 서버 에 있기 때문에 마스터 브랜치를 삭제하면 오류가 발생하는 것 같습니다 . 기본 브랜치가 '릴리즈'가되도록이를 변경할 수 있는지 지금 확인하려고합니다.


2
헤, 충분히 공평합니다. 장기적인 가치는 적어도 시도 할만큼 충분히 높습니다.
Kyle Hayes


일부 (원격) 서버는 "기본"분기 삭제를 거부합니다 (Github의 경우). 따라서 작업 시간에 다른 "기본"분기를 선택하려면 서버로 이동해야합니다. Github에서는 "분기"보기에서이 작업을 수행 할 수 있습니다.
jehon

답변:


139
git checkout -b release master    # Create and switch to the release branch
git push -u origin release        # Push the release branch to the remote and track it
git branch -d master              # Delete local master
git push --delete origin master   # Delete remote master
git remote prune origin           # Delete the remote tracking branch

사용중인 경우 참고 GitHub 를 3 단계 후에 먼저 GitHub에서 "기본"브랜치를 변경해야합니다.

github.com의 저장소에서 SettingsBranchesDefault Branch 로 이동 합니다 . 릴리스로 변경 한 다음 나머지 단계를 수행하십시오.


3
내가 자식 푸시 --delete을 시도 할 때, 나는 다음과 같은 오류가 발생합니다 : 현재 브랜치의 삭제가 금지
카일 헤이즈에게

8
github 또는 이와 유사한 것을 사용하고 있습니다. 기본 브랜치를 다른 것으로 만들어야합니다. matthew-brett.github.com/pydagogue/gh_delete_master.html 또는 마스터를 그대로두고 무시합니다.
Adam Dymitruk

네, 엄청난 사례가 있습니다. 그것이 옵션인지 보자.
Kyle Hayes

거대하게 보이는 커밋 후크는 마스터 브랜치의 삭제를 금지하는 것 같습니다.-내가 볼 수있는 좋은 이유가 없습니다. : /
fge

1
동일 ! [remote rejected] branch (deletion of the current branch prohibited) 의 Bitbucket에 발생합니다. 설정 화면 (톱니 바퀴 아이콘 아래)에서 "메인 리포지토리"로 전환
dnfehren

13

마스터 브랜치 확인

git checkout master

릴리스 브랜치를 생성하고 전환합니다.

git branch release
git checkout release

서버에 푸시

git push origin release

서버에서 마스터 분기 참조 삭제

git push origin :master

로컬 마스터 브랜치 삭제

git branch -d master

2
이 단계를 통해 위에서 언급 한 것과 동일한 오류가 발생한다는 것을 알 수 있습니다.
Kyle Hayes

@KyleHayes 서버의 구성 문제입니다. 기본적으로는 이런 방식이지만 사용자에게 분명하거나 Stackoverflow에서 쉽게 검색
Jeff Ferland

분기를 삭제하려면 먼저 다른 분기로 전환해야합니다.
martinedwards

5

참고 :이 답변은 명령 줄 액세스 권한이있는 자체 호스팅 Git 서버를위한 것입니다.

remote master클라이언트에서 를 삭제하려는 것은 실제로 허용되지 않으며 금지 denyDeleteCurrent가 의미 가 있다고 가정 하므로 해당 설정을 변경하고 싶지 않습니다.

그러나 원격 서버에 대한 명령 줄 액세스 권한이있는 경우 마스터 이름을 변경 하는 가장 쉬운 방법 은 원격에서 직접 rename 명령을 실행하는 것입니다.

이것은 나를 위해 일했습니다.

  1. SSH를 통해 원격 git 서버에 로그인
  2. 프로젝트의 xxx.git 폴더로 이동하십시오.
  3. 운영: git branch -m master release

이제 원격 저장소는 release기본 브랜치로 사용 하고 git clone클라이언트의 해당 저장소에있는 모든 저장소는 기본적으로 릴리스 브랜치를 체크 아웃합니다.

필요에 맞게 구성하기 위해 베어 저장소를 설정 한 후에도 매우 유용합니다.


3

이전에 다른 사람들이 언급했듯이 여기서 문제는 Gitorious이며, 기본적으로 HEAD 분기를 삭제할 수 없습니다. 이 문제를 해결할 수있는 두 가지 옵션이 있습니다. 하나는 Gitorious 서버 (ssh 사용)에 로그인하고 파일 서버에서 Git 저장소를 찾아 다음을 추가하는 것입니다.

[receive]
        denyDeleteCurrent = warn

구성에.

더 쉬운 옵션은 기본 분기를 변경하는 것입니다. Gitorious 웹 인터페이스의 저장소로 이동하여 "저장소 편집"을 누르고 "Head Change the symbolic ref the HEAD in the Git repository points :"를 설정합니다. 이 작업을 마치면 마스터 브랜치를 삭제할 수 있습니다.


2

GitHub 에서이 문제가 발생하는 경우 원격에서 분기를 삭제할 때까지 단계를 수행하십시오. 그렇게 할 수는 없습니다. 그런 다음 웹 인터페이스에 로그인하고 저장소에서 설정분기기본 분기 로 이동 합니다 . 새 분기로 변경하고 나머지 단계를 수행하십시오.


1

이상적으로 추적을 설정하려면 다음과 같이하십시오.

git push origin HEAD:release
git checkout --track origin/release

이제 다른 항목을 삭제 하시겠습니까?

git branch -d master
git push origin :master

단순한!


git push origin : master 명령에 도달했을 때 @Adam의 댓글에 게시 한 것과 동일한 오류가 발생했습니다.
Kyle Hayes

0

분기 이름 변경이 완료되었으므로 HEAD를 release원격 으로 설정하려면

git remote set-head origin release

그런 다음 master원격에서 분기 를 삭제하려면 적어도 GitHub에서 관리자 여야합니다. 자세한 내용은 이 게시물 을 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.