문제

"마스터"외에 무언가를 가리키기 위해 Git Remote의 헤드 참조를 어떻게 설정합니까?

내 프로젝트에는 "마스터"지점을 사용하지 않는 정책이 있습니다 (모든 지점에는 의미있는 이름이 있어야합니다). 또한 표준 마스터 저장소는 SSH : //을 통해서만 액세스 할 수 있으며 (Github 또는 Unfdudd와 같은) 쉘 액세스가 없습니다.

내 문제는 원격 저장소에 여전히 Refs/Heads/Mas 이것은 두 가지 문제를 일으킨다 :

  1. 저장소를 복제 할 때,이게

    경고 : 원격 헤드는 존재하지 않는 심판을 말하며 결제 할 수 없습니다.

    혼란스럽고 불편합니다.

  2. 웹 기반 코드 브라우저는 트리를 탐색하기위한 기초로 헤드에 의존합니다. 그렇다면 유효한 지점을 가리키기 위해 머리가 필요합니다.

도움이 되었습니까?

해결책

거의 없었습니다 Github에 대한 같은 질문 1 년 전.

아이디어는 마스터 브랜치의 이름을 바꾸는 것이 었습니다.

git branch -m master development
git branch -m published master
git push -f origin master 

마스터를 만들기 위해 사람들이 원하는 것을 가지고 있고, 다른 모든 작업을 지점에서 수행하십시오.

(ㅏ "git-symbolic-ref HEAD refs/head/published"원격 repo로 전파되지 않을 것입니다)

이것은 "와 유사합니다.git에서 원점/마스터를 어떻게 삭제합니까?".


말했듯이 이 스레드: (강조 광산)

"git clone"단일 로컬 브랜치 만 생성합니다.
그렇게하려면, 그것은 봅니다 HEAD ref 원격 repo 중에서, 원격 분기와 동일한 이름의 로컬 브랜치를 작성합니다.

그래서 그것을 마무리하기 위해, 당신은 repo a를 가지고 복제합니다.

  • HEAD 참조 refs/heads/master 그리고 그것은 존재합니다
    -> 원산지/마스터에서 시작하여 마스터라는 현지 지점을 얻습니다.

  • 헤드 참조 refs/heads/anotherBranch 그리고 그것은 존재합니다
    -> 당신은 전화를 끊는 현지 지점을 얻습니다 anotherBranch, 시작 origin/anotherBranch

  • 헤드 참조 refs/heads/master 그리고 그것은 존재하지 않습니다
    -> "Git Clone"은 불평합니다

직접 수정하는 방법이 있는지 확실하지 않습니다. HEAD 레포에 심판.

(이것은 당신의 질문의 모든 요점입니다, 나는 알고 있습니다;))))))))))


아마도 유일한 방법은 "가난한 사람들을위한 출판", 너 어디:

 $ git-symbolic-ref HEAD refs/head/published
 $ git-update-server-info
 $ rsync -az .git/* server:/local_path_to/git/myRepo.git/

그러나 여기에는 서버에 대한 쓰기 액세스가 포함되며, 항상 가능하지는 않습니다.


내가 설명하는 것처럼 "GIT : 베어 리포지토리에서 활성 분기를 변경하는 올바른 방법?", git remote set-head 원격 저장소에서 아무것도 바꾸지 않을 것입니다.

로컬 리포에 로컬로 저장된 원격 추적 브랜치 만 변경합니다. remotes/<name>/HEAD.

다른 팁

업데이트: 이것은 저장소의 로컬 사본 ( "클라이언트")에만 작동합니다. 아래의 다른 의견을 참조하십시오.

최근 GIT (2014 년 2 월) 버전의 경우 올바른 절차는 다음과 같습니다.

git remote set-head $REMOTE_NAME $BRANCH

예를 들어, 원격으로 헤드를 전환합니다 origin 분기에 develop 다음과 같습니다.

git remote set-head origin develop

Github를 언급하기 때문에 사이트에서이를 수행하려면 단순히 프로젝트에 들어가면 ...

admin > Default Branch > (choose something)

완료.

보다: http://www.kernel.org/pub/software/scm/git/docs/git-symbolic-ref.html

이것은 GIT 저장소에서 기본 분기를 설정합니다. 이것을 베어 또는 미러 리포지토리로 실행할 수 있습니다.

용법:

$ git symbolic-ref HEAD refs/heads/<branch name>

(기본적으로 이미 같은 질문이있었습니다. "원격 저장소에서 Git Symbolic Ref를 만듭니다"보편적 인 대답을받지 못했습니다.)

그러나 다양한 Git "Farms"에 대한 구체적인 답변이 있습니다 (여러 사용자가 HTTP 및 SSH를 통해 제한된 인터페이스를 통해 GIT 저장소를 관리 할 수있는 곳) : http://github.com, http://gitorious.org, http://repo.or.cz, 지라 (http://git.altlinux.org).

이러한 특정 답변은이 페이지를 읽고 이러한 특정 서비스에 대해 생각하는 사람들에게 유용 할 수 있습니다.

쉘에서 원격 저장소에 액세스 할 수있는 경우 .git (또는 베어 레포 인 경우 메인 디르)로 이동하여 헤드 파일을 변경하여 올바른 헤드를 가리키십시오. 예를 들어, 기본적으로 기본적으로 'refs : refs/heads/mas

분리 된 것을 만들 수 있습니다 주인 도자기 git 명령 만 사용하는 분기 :

git init
touch GO_AWAY
git add GO_AWAY
git commit -m "GO AWAY - this branch is detached from reality"

그것은 우리에게 a 주인 무례한 메시지가있는 분기 (더 정중하게 원할 수도 있습니다). 이제 우리는 "실제"지점을 만듭니다 ( 트렁크 SVN을 기리기 위해) 이혼하십시오 주인:

git checkout -b trunk
git rm GO_AWAY
git commit --amend --allow-empty -m "initial commit on detached trunk"

이봐, 프레스토! gitk -all 표시됩니다 주인 그리고 트렁크 그들 사이의 연결이 없습니다.

여기서 "마법"이 그게 다행입니다 --개정하다 원인 git 커밋 현재 머리와 동일한 부모와 함께 새로운 커밋을 만들려면 헤드 포인트를 만듭니다. 그러나 현재 헤드는 저장소의 초기 커밋이기 때문에 부모가 없으므로 새 헤드는 서로 분리되지 않습니다.

오래된 헤드 커밋은 삭제되지 않습니다 Git-GC 심판/헤드/마스터가 여전히 그것을 가리키기 때문입니다.

그만큼 -XMALTY 깃발은 빈 나무를 저지르기 때문에 필요합니다. 일부가 있었다면 git 추가이후 git rm 그러면 필요하지 않습니다.

사실, 당신은 저장소의 초기 커밋을 분기하고 나무를 삭제하고, 분리 된 나무를 추가 한 다음, git commit -amend.

원격 저장소에서 기본 브랜치를 수정하는 방법에 대한 질문에 대한 답변은 없지만 분리 된 분기를 만드는 방법에 대한 깨끗한 답변을 제공합니다.

먼저 기본값으로 설정하려는 새 지점을 작성하십시오.

$>git branch main

다음으로 해당 가지를 밀어 넣으십시오 기원:

$>git push origin main

이제 GitHub 계정에 로그인하면 저장소로 이동하여 설정> 기본 분기를 선택하고 선택할 수 있습니다.기본."

그런 다음 선택하면 마스터 브랜치를 삭제할 수 있습니다.

$>git push origin :master

Gitolite People의 경우 Gitolite는 (대기)라는 명령을 지원합니다. symbolic-ref. REPO에 W (쓰기) 권한이있는 경우 해당 명령을 원격으로 실행할 수 있습니다.

이 질문과 관련하여, 나는 다음을 검색 할 때 여기에서 끝났습니다.

Github에서 변경된 기본 지점을 인식하는 지역 리포

완전성을 위해 답변 추가 :

git remote set-head origin -a

단순한 단순히 Github 계정에 로그인하고 탐색 메뉴의 가장 오른쪽에 선택하십시오. 설정,에서 설정 탭 선택하다 기본 지점 그리고 저를 위해 트릭을 한 저장소의 메인 페이지로 돌아갑니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top