내 'git branch'에 마스터가없는 이유는 무엇입니까?


94

저는 git newbie이고 "마스터"브랜치에 대해 계속 읽고 있습니다. "마스터"는 사람들이 사용하는 관습적인 이름 일 뿐입니 HEAD까 아니면 특별한 의미가 있습니까?

git branch내가 가지고있는 클론에 대해 작업 할 때 하나의 분기 만 표시됩니다. "마스터"는 전혀 없습니다. 입력하면 git checkout master(많은 자습서 또는 가이드에서 볼 수 있듯이)

error: pathspec 'master' did not match any file(s) known to git.

나는 왜 내 클론 master에 모든 사람이 항상 존재한다는 것을 암시하는 것처럼 보이는 이유에 대해 혼란스러워 합니다.

답변:


73

대부분의 Git 저장소가 사용하는 master주요 (및 기본) 지점으로 - 새 망할 놈의 repo를 통해 초기화하는 경우 git init, 그것은 것 master기본적으로 체크 아웃.

그러나 리포지토리를 복제하는 경우 기본 브랜치는 원격이 HEAD가리키는 모든 것입니다 ( HEAD실제로 브랜치 이름을 가리키는 심볼릭 참조 ). 따라서 복제 한 저장소가를 HEAD가리키고있는 경우, foo복제본에는 foo분기 만있을 것 입니다.

원격 당신은 여전히있을 수 있습니다에서 복제 master지점 (당신이 확인할 수 있습니다 git ls-remote origin master),하지만 당신은 기본적으로 해당 분기의 로컬 버전을 생성하지 않았을 때문에 git clone원격의 밖으로 만 확인 HEAD.


6
그런 다음 원본에서 마스터가 있으면 어떻게 체크 아웃합니까?
Bunyk 2014 년

어떻게 당신은 마스터 HEAD를 설정
매트 스미스에게

32
git init로 내 저장소를 만들었고 마스터 브랜치가 만들어지지 않았습니다. Github를 사용하면 브랜치가 자동으로 생성되지만 Bitbucket에서는 생성되지 않습니다. ()가 없습니다 단계는 다음과 같다 : git add ., git commit -m "Test"다음 git push -u origin master.
Shailen 2014 년

12
@Amber "치명적 : 마스터 : 유효한 SHA1이 아닙니다"라는 오류 메시지가 나타납니다.
KK_07k11A0585

1
@Amber git ls-remote origin master는 아무것도 표시하지 않습니다.
Parisa Khateri

86

로컬에 존재하지 않지만 원격 저장소에있는 브랜치를 체크 아웃하려면 다음 명령을 사용할 수 있습니다.

git checkout -t -b master origin/master

이 질문이 꽤 오래되었지만 도움을 주셔서 감사합니다. 그러나 당신의 대답은 내가 묻는 것이 아닙니다.
aberrant80 2014 년

fatal: Cannot update paths and switch to branch 'master' at the same time.
Raphael Onofre


github에서 마스터 브랜치를 생성하고 기본값으로 설정하는 문제 수정
Raphael Onofre 2017 년

45

master 브랜치의 이름 일 뿐이며 새 저장소가 생성 될 때 기본적으로 생성된다는 점을 제외하고는 마법이 없습니다.

을 사용하여 다시 추가 할 수 있습니다 git checkout -b master.


git checkout -b master나를 위해 현재 분기에서 새 분기를 추가합니다.
nnyby

1
@nnyby git checkout -b mastermaster무엇이든지간에 분기를 생성 HEAD하므로 다른 분기에있는 경우 해당 master분기 를 생성 합니다. 이미 master브랜치를 가지고있는 경우를 제외하고 (예를 들어 삭제했거나 커밋하지 않은 경우가 아니면 그렇게 할 것입니다). 이미 master분기 가있는 경우이 명령은 오류를 제공합니다.
Matt Curtis

2
내 질문은 : 어떻게 실수로 마스터를 삭제 했습니까?
Eric Walker

@EricWalker master는 브랜치 일 뿐이며 git branch -d master. git은 현재있는 브랜치를 삭제하지 못하도록 보호하지만 브랜치를 보호하는 특별한 방법은 없습니다 master. 그보다 구체적으로 어떻게했는지 말하기가 어렵습니다. 셸의 history명령을 사용하여 살펴 보시겠습니까?
Matt Curtis

1
안녕하세요 @MattCurtis, 귀하의 답변은 현재 오해의 소지가 있습니다. git checkout -b masterHEAD가 origin / master로 설정된 경우에만 작동합니다. 다른 경우 (예 : 'develop'에 있음) git checkout -b master는 현재 HEAD 위치 (예 : 'develop')를 기반으로하는 'master'라는 분기를 만듭니다. 또한 새 분기의 인피부가 될 분기를 명시해야합니다. @Bunyk는이 스레드에 대한 정답을 가지고 있습니다 : stackoverflow.com/a/21330943/287109
AVIDeveloper

23

실제로 완전히 새로운 저장소에서 동일한 문제가 발생했습니다. 나는으로 하나를 만들려고 시도했지만 git checkout -b master분기를 만들지 않았습니다. 그런 다음 몇 가지 변경 사항을 적용하고 커밋하면 git이 마스터 브랜치를 만들었습니다.


1
오해의 소지가있는 부분은 사람들이 내가 주인이 있다고 말하지만 내가하려고하면 내가 주인이 없다는 오류 메시지를 받게된다는 것입니다. (내 저장소가 아직 비어있는 동안 dev 브랜치를 만들려고했습니다.) 어떤 파일 (모든 파일)을 커밋함으로써 이제 마스터가 생성되고 다른 작업을 계속할 수있었습니다. 다른 답변의 것들을 시도했지만 도움이되지 않았습니다. 여기에있는이 하나의 대답은 많은 사람들에게 적용될 수 있습니다. (. 내가 힘내에서 해싱에 대해 많이 읽고 처음에 아무것도 존재하지 않는 경우 같아요, 해시 아무것도 없다.)
파이 잉

15

제 경우에는 개발 브랜치가 있었지만 마스터 브랜치는 없었습니다 . 따라서 새로 생성 된 HEAD를 기존 브랜치로 가리키는 저장소를 복제했습니다. 그런 다음 누락 된 마스터 분기를 만들고 새 마스터 분기를 가리 키도록 HEAD를 업데이트합니다.

git clone git:repositoryname --branch otherbranch
git checkout -b master
git update-ref HEAD master
git push --set-upstream origin master

아, 간다 .. 나는 스승이나 아무것도 없었다. 먼저 새 파일과 초기 커밋을 추가 한 다음 이렇게했습니다. 마법처럼 일했다
더스틴 실크

12

복제 한 새 저장소 인 경우 여전히 비어있을 수 있습니다.

git push -u origin master

아마도 그것을 분류해야합니다.

(내 경우에 있었습니까. 이것이 동일한 문제인지 확실하지 않습니다.이를 게시해야한다고 생각했습니다. 다른 사람들에게 도움이 될 수 있습니다.)


8

나는 같은 문제에 부딪 쳤고 문제를 파악했습니다. 저장소를 초기화 할 때 실제로 분기가 없습니다. 프로젝트 실행을 시작하면 git add .다음과 git commit마스터 지점이 생성됩니다.

아무것도 확인하지 않으면 마스터 브랜치가 없습니다. 이 경우 다른 사람들이 제안한 단계를 따라야합니다.


2
진실. "git init"다음에 "git checkout -b somebranchname"을 수행하면 마스터 브랜치가 없습니다
koem dec

폴더가 비어있는 경우에도 충분하지 않을 수 있습니다. 따라서이 작업을 수행하려면 파일을 추가해야합니다. 이 또 다른 어색함은 실제로 실망 스럽습니다.
alehro

0

마스터 브랜치에 적어도 하나의 로컬 커밋이 있어야 할 것 같습니다.

git push -u origin master

따라서 git init .다음 git remote add origin ...을 수행 한 경우 에도 다음 을 수행해야합니다.

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