ti-enxame.com

Por que meu 'git branch' não tem mestre?

Eu sou um git novato e continuo lendo sobre um ramo "mestre". É "mestre" apenas um nome convencional que as pessoas usaram ou tem um significado especial como HEAD?

Quando eu faço git branch no clone que tenho, vejo apenas um único branch - aquele em que estou. Nenhum "mestre" em tudo. Se eu digitar git checkout master (como vejo em muitos tutoriais ou guias), recebo

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

Eu só estou confuso sobre o porquê de meu clone não ter um master que todos parecem implicar que sempre existe.

80
aberrant80

A maioria dos repositórios Git usa master como a ramificação principal (e padrão) - se você inicializar um novo repositório Git via git init, ele terá master reservado por padrão.

No entanto, se você clonar um repositório, o branch padrão que você tem é o que o HEAD do controle remoto aponta para (HEAD é na verdade um ref simbólico que aponta para um nome de ramificação). Portanto, se o repositório clonado tiver um HEAD apontado para, digamos, foo, seu clone terá apenas uma ramificação foo.

O controle remoto do qual você clonou ainda pode ter uma ramificação master (você pode verificar com git ls-remote Origin master), mas não teria criado uma versão local dessa ramificação por padrão, porque git clone apenas verifica o HEAD do controle remoto.

65
Amber

Para fazer o checkout de uma ramificação que não existe localmente mas está no repositório remoto, você pode usar este comando:

git checkout -t -b master Origin/master
79
Bunyk

master é apenas o nome de um branch, não há nada de mágico nisso, exceto que é criado por padrão quando um novo repositório é criado.

Você pode adicioná-lo novamente com git checkout -b master.

38
Matt Curtis

Eu realmente tive o mesmo problema com um repositório completamente novo. Eu até tentei criar um com git checkout -b master, mas ele não criaria o branch. Eu então percebi que se eu fizesse algumas mudanças e as cometesse, o git criou meu branch master.

21
eacousineau

No meu caso, houve uma ramificação desenvolver mas não master branch. Portanto, eu clonei o repositório apontando o HEAD recém-criado para o ramo existente. Então criei a ramificação master e atualizei HEAD para apontar para a nova ramificação principal.

git clone git:repositoryname --branch otherbranch
git checkout -b master
git update-ref HEAD master
git Push --set-upstream Origin master
13
antoniob

se for um novo repo que você clonou, ele ainda pode estar vazio, nesse caso:

git Push -u Origin master

provavelmente deveria resolvê-lo.

(no meu caso, não tenho certeza se este é o mesmo problema, pensei que eu deveria postar isso apenas no caso. pode ajudar os outros.)

12
digit

Eu me deparei com o mesmo problema e descobri o problema. Quando você inicializa um repositório, não há ramificações. Quando você inicia um projeto, execute git add . e, em seguida, git commit e a ramificação principal será criada.

Sem verificar nada, você não tem ramificação mestre. Nesse caso, você precisa seguir os passos sugeridos por outras pessoas.

7
Nick ONeill

Parece que deve haver pelo menos um commit local no branch master para fazer:

git Push -u Origin master

Então, se você fez git init . e depois git remote add Origin ..., você ainda precisa fazer:

git add ...
git commit -m "..."
0
Zelphir