"git branch -r"를 실행할 때 "원산지/헤드"가 표시되는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/354312

  •  21-08-2019
  •  | 
  •  

문제

당신이 달릴 때 git branch -r Blazes가 그 목록을 작성하는 이유 origin/HEAD? 예를 들어, Github에는 원격 저장소가 있습니다. 만약 내가한다면 git clone 그것을 잡고 새 디렉토리로 가서 지점을 나열하려면 다음을 본다.

$ git branch -r
origin/HEAD
origin/master
origin/awesome-feature

또는 어떤 순서가 있을지 (알파? 나는 무고한 레포 비밀의 정체성을 유지하기 위해이 예를 제기하고 있습니다). 그래서 뭐야 HEAD 사업? 마지막 사람이 무엇입니까? push 그들의 HEAD 그들이 밀었을 때를 가리 켰습니까? 항상 그것이 무엇이든지는 아닙니다 push에드? HEADS가 돌아 다니는 ... 왜 누군가가 무엇을 신경 쓰나요? HEAD 다른 기계를 가리 켰습니까?

나는 원격 추적 등을 다루고 있으므로 이것은 하나의 남아있는 혼란입니다. 감사!

편집 : 나는 전용 원격 저장소 (아무도 SSH를 입력하지 않고 해당 코드를 사용하지 않고 당기거나 푸시하는 등)와 같은 github와 같이 기본적으로 머리가 없어서는 안된다는 인상을 받았습니다. 작업 사본이 없습니다. 별로?

도움이 되었습니까?

해결책

@Robinst 맞다.

GIT에서는 기본적으로 체크 아웃하는 지점을 선택할 수 있습니다 (즉, 복제 할 때). 기본적으로, origin/HEAD 그것을 지적 할 것입니다.

Github에서 당신은 이것을 바꿀 수 있습니다 GitHub Repo의 관리자 설정에서. 당신은 또한 명령 줄에서 그것을 할 수 있습니다

git remote set-head origin trunk

또는 완전히 삭제하십시오

git remote set-head origin -d

예시. '스위치 브랜치'드롭 다운을보십시오. trunk 확인합니다 origin/HEAD 다음 trunk.

다른 팁

베어 리포지토리가 헤드를 가질 수있는 이유는 저장소의 클론 후 처음에 어떤 분기가 체크 아웃되기 때문입니다.

일반적으로 헤드는 마스터를 가리 킵니다. 사람들이 저장소를 복제 할 때 체크 아웃하는 지점입니다. 다른 분기 (베어 리포지토리에서 헤드를 편집하여)로 설정하면 해당 분기가 클론에서 체크 아웃됩니다.

나는 전용 원격 리포지토리 (아무도 SSH를 사용하지 않고 해당 코드를 사용하지 않고 풀 또는 푸시 만으로만 일할 수없는 Github와 같은)라는 인상을 받았습니다. 기본적으로 작동하지 않았기 때문에 머리가 없어서는 안됩니다. 복사. 별로?

나는 당신이 말한 것과 똑같은 인상을 받았습니다.

그리고 나는 심지어 Github에서 복제 된 Origin/Head 원격 추적 지점을 삭제할 수 없습니다.

git branch -d -r origin/HEAD

이것은 효과가 없었습니다.

그 원점/헤드 원격 트래킹 브랜치를 어떻게 삭제할 수 있는지 말해 줄 수 있습니까?

업데이트

Github에서 클론 할 때 원점/헤드가 생성되는 이유를 찾지 못했지만 삭제하는 방법을 찾았습니다.

Git의 새로운 버전은 제공합니다

git remote set-head <name> -d

원격 추적 브랜치의 쓸모없는 헤드 포인터를 삭제합니다.

그리고 우리는 또한 멍청한 기본 이름 '원점'을 사용하여 원하는대로 변경할 수 있습니다.

git remote rename origin <new_name>

이것이 도움이되기를 바랍니다. :)

당신이 맞아요 밀고 전용 원격 저장소는 '베어', 즉 작업 디렉토리가 없을 때 훨씬 더 잘 작동합니다. Git의 아키텍처는 패치 또는 pull (fetch), 분산 VC에서 의미가 있습니다. 문서가 어딘가에 말하면서 현재 체크 아웃되는 지점으로 밀면 "예상치 못한 결과".

헤드는 유효한 저장소 요구 사항의 일부입니다. git 저장소 레이아웃 부분적으로 다음과 같이 말합니다.

HEAD

A symref (see glossary) to the refs/heads/ namespace describing the currently active  
branch. It does not mean much if the repository is not associated with any working tree  
(i.e. a bare repository), but a valid git repository must have the HEAD file; some  
porcelains may use it to guess the designated "default" branch of the repository  
(usually master). It is legal if the named branch name does not (yet) exist.

그래서 당신은 "그것을 의미하지는 않는다 ..."라도 지점 목록의 일부로 머리를 보게 될 것입니다.

"Origin"이 원격 저장소 인 경우 Origin/Head는 해당 원격 저장소의 기본 분기를 식별합니다.

예시:

$ git remote show
origin
$ git remote show origin
* remote origin
  Fetch URL: git@github.com:walkerh/pipe-o-matic.git
  Push  URL: git@github.com:walkerh/pipe-o-matic.git
  HEAD branch: master
  Remote branch:
    master tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (fast-forwardable)

"헤드 브랜치 : 마스터"라는 선에 주목하십시오. 이곳에서 원격 저장소가 클라이언트에게 기본적으로 체크 아웃 할 지점을 알리는 곳입니다.

항상 머리가 있습니다 포인트들 원격 저장소의 현재 확인 된 지점 (마스터가 될 수도 있고 아닐 수도 있음). 원격 저장소조차도 현재 분기가 있습니다. 일반적으로 그것은 마스터이고 내 머리 꼭대기에서 나는 그것을 바꾸고 싶어하는 이유를 생각할 수 없지만 변경할 수 있습니다.

내 생각에 누군가가 지점을 밀고 머리라고 불렀을 것입니다.

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