"git branch -r"을 실행할 때 왜 "origin / HEAD"가 표시됩니까?
당신은 git branch -r
왜 불꽃이 나열 origin/HEAD
됩니까? 예를 들어 GitHub에는 master와 awesome-feature라는 두 가지 지점이있는 원격 저장소가 있습니다. 내가 할 경우 git clone
그것을 잡아하고 나의 새로운 디렉토리로 가서 가지를 나열하려면,이를 참조하십시오
$ git branch -r
origin/HEAD
origin/master
origin/awesome-feature
또는 순서에 관계없이 (알파? 무고한 저장소의 신원을 비밀로 유지하기 위해이 예를 위조하고 있습니다). 그래서 HEAD
사업은 무엇입니까? 그것은 마지막 사람이 무엇인가 push
자신했다 HEAD
그들이 추진하는 경우에 지적을? 그것이 항상 그들이 무엇을 push
먹고 있지 않습니까? HEAD
s HEAD
다른 곳에서 누군가가 지적한 것을 신경 쓰는 이유는 무엇 입니까?
원격 추적 등을 처리하고 있기 때문에 이것은 혼란스러운 것 중 하나입니다. 감사!
편집 : 나는 전용 원격 저장소 (GitHub와 같은 사람은 아무도 코드를 작성하지 않고 밀어 넣거나 밀어 넣는 등)가 없었으며 기본적으로 HEAD가 없어야한다는 인상을 받았습니다. 작업 사본이 없습니다. 별로?
@robinst 가 맞습니다.
git에서는 기본적으로 체크 아웃 할 분기를 선택할 수 있습니다 (예 : 복제 할 때). 기본적으로 origin/HEAD
그 점을 가리 킵니다.
GitHub의 GitHub 리포지토리 에 대한 관리자 설정에서이를 변경할 수 있습니다 . 명령 줄에서 다음을 통해 수행 할 수도 있습니다.
git remote set-head origin trunk
또는 전체를 통해 삭제
git remote set-head origin -d
예 . 'Switch Branches'드롭 다운을보십시오. 다음과 같이 trunk
확인 origin/HEAD
됩니다 trunk
.
베어 리포지토리에 HEAD가있을 수있는 이유는 리포지토리 복제 후 처음으로 체크 아웃 한 분기를 결정하기 때문입니다.
일반적으로 HEAD는 마스터를 가리키며 사람들이 저장소를 복제 할 때 체크 아웃되는 분기입니다. 베어 브랜치 저장소에서 HEAD를 편집하여 다른 브랜치로 설정하면 해당 브랜치가 클론에서 체크 아웃됩니다.
전용 원격 리포지토리 (GitHub와 같은 사람은 아무도 코드를 밟지 않고 밀어 넣지 만 밀어 넣는 등)가 없었으며 기본적으로 작동하지 않기 때문에 HEAD가 없어야한다는 인상을 받았습니다. 부. 별로?
당신이 말한 것과 똑같은 인상을 받았습니다
그리고 심지어 github에서 복제 한 원산지 / HEAD 원격 추적 분기를 삭제할 수 없습니다
git branch -d -r origin/HEAD
이것은 효과가 없었습니다.
누군가 원산지 / HEAD 원격 추적 분기를 삭제하는 방법을 알려줄 수 있습니까?
최신 정보
github에서 복제 할 때 생성 된 원산지 / HEAD가있는 이유를 찾지 못했지만 삭제하는 방법을 찾았습니다.
git의 새로운 버전은
git remote set-head <name> -d
원격 추적 분기의 쓸모없는 HEAD 포인터를 삭제합니다.
또한 벙어리 기본 이름 인 'origin'을 원하는대로 변경할 수 있습니다.
git remote rename origin <new_name>
이것이 도움이되기를 바랍니다. :)
당신은 맞아요 로 밀어 그들이 작업 디렉토리가없는 경우가있을 때 전용 원격의 repos이 훨씬 더 잘 작동, 즉, '베어'. Git의 아키텍처는 분산 VCS에서 의미가있는 패치 또는 pull
( fetch
) 로 업데이트하도록 설계되었습니다 . 문서가 어딘가에서 말했듯이 현재 체크 아웃 된 지점으로 밀면 "예기치 않은 결과"가 발생할 수 있습니다 .
HEAD는 유효한 저장소에 대한 요구 사항의 일부입니다. 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.
따라서 "그다지 의미가 없다 ..."라고해도 HEAD를 분기 목록의 일부로 보게 될 것입니다.
"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)
"HEAD branch : master"라는 줄을 적어 둡니다. 이것은 원격 저장소가 클라이언트가 기본적으로 어느 브랜치를 체크 아웃해야하는지 알려줍니다.
원격 저장소의 현재 체크 아웃 된 분기 를 가리키는 HEAD가 항상 있습니다 (마스터 일 수도 있고 아닐 수도 있음). 원격 저장소에도 현재 분기가 있습니다. 일반적으로 마스터이며 내 머리 꼭대기에서 나는 그것을 바꾸고 싶은 이유를 생각할 수 없지만 바꿀 수는 있습니다.
My guess is that someone pushed a branch and called it HEAD:
git push origin HEAD
참고URL : https://stackoverflow.com/questions/354312/why-is-origin-head-shown-when-running-git-branch-r
'IT story' 카테고리의 다른 글
Angular.js : $ eval은 어떻게 작동하며 왜 vanilla eval과 다른가요? (0) | 2020.06.14 |
---|---|
“Execute Around”관용구는 무엇입니까? (0) | 2020.06.14 |
XML을 목록으로 직렬화 해제 할 수 있습니까? (0) | 2020.06.14 |
키워드 세트는 실제로 VBA에서 무엇을합니까? (0) | 2020.06.14 |
"벡터화"란 무엇입니까? (0) | 2020.06.14 |