fatal: Não é um nome de objeto válido: 'master'


182

Eu tenho um servidor privado executando o git 1.7 Quando eu

git init 

uma pasta que não cria uma ramificação principal. Porque quando eu faço:

git branch 

não lista nada. Quando eu faço:

git --bare init

cria os arquivos. Quando digito

git branch master 

diz:

fatal: Not a valid object name: 'master'.

O mesmo resultado ao tentar gerar uma nova ramificação:git branch newbranch
— Sören

Respostas:


281

Quando eu git initpasta, ela não cria uma ramificação principal

Isso é verdade, e o comportamento esperado. O Git não criará uma masterramificação até você confirmar algo.

Quando eu faço git --bare initisso cria os arquivos.

Um não nu git inittambém criará os mesmos arquivos, em um .gitdiretório oculto na raiz do seu projeto.

Quando digito git branch master, diz "fatal: Não é um nome de objeto válido: 'master'"

Esse é novamente o comportamento correto. Até você confirmar, não há ramificação principal .

Você não fez uma pergunta, mas eu responderei à pergunta que eu supus que você pretenda fazer. Adicione um ou mais arquivos ao seu diretório e git addeles para preparar uma confirmação. Em seguida, git commitcrie seu commit e masterramificação inicial .


3
Então, e se eu nunca quisesse um ponteiro de ramo chamado "mestre"? E se eu quisesse que fosse chamado de "principal"? Não há como começar com um nome diferente para o primeiro ponteiro de ramificação? Não há parâmetros "git init"? Eu poderia mudar o nome listado em .git / HEAD? Existem outros arquivos que eu precisaria alterar também?
— Jemenake

1
@Jemenake Então inicie seu repositório, faça um commit e renomeie o branch. Se você realmente deseja evitar que uma ramificação "principal" seja criada, edite .git/HEADe mude refs/heads/masterpara refs/heads/main, mas não há nenhuma razão para fazer isso. Apenas renomeie sua ramificação após o primeiro commit.
— meagar

13
você pode usar git checkout -b <branchname>para alterar HEAD - você não precisa editar o arquivo.
— Superfly Jon

1
A última parte foi dourada, o TFS GIT vem com um repositório git totalmente não inicializado. Então, após o primeiro clone usando o SourceTree, nada funcionou e não foi possível descobrir por um longo tempo até "Então git commit para criar seu commit inicial e ramificação principal". Realmente não há como ter mestre-local / remoto sem confirmação / envio inicial?
— Pawel Cioch

A última explicação me ajuda a entender que o ramo não pode existir se não houver confirmações.
— Mayur Patil

23

O Git cria uma ramificação principal assim que você faz seu primeiro commit. Não há nada para se ramificar, se não houver código no repositório.


1
Mas você precisa de uma nova ramificação para entrar no mestre.
— Sören

1
aqui está uma pergunta sobre 'O Git cria um ramo mestre depois que você faz seu primeiro commit'. Então, por que o 'status git' mostra 'On Branch Master' antes de tudo isso?
— Tick20

16

Primeiro, quando você cria um "repositório vazio", não fará nenhum trabalho com ele (ele não contém uma cópia de trabalho, portanto o git branchcomando não é útil).

Agora, o motivo pelo qual você não teria uma masterramificação mesmo depois de fazer a git inité que não há confirmações: quando você cria sua primeira confirmação, você terá uma masterramificação.


1
Ok, está claro. Mas quando eu cometer diz: fatal: ident vazio
— Roy van Zanten

Eu consertei isso para. Mas quando eu quero extrair / buscar este repositório de outro computador. Devo fazer git init lá para?
— Roy van Zanten

@RoyvanZanten Você pode usar git clonepara evitar ter que fazer um git initno lado do receptor.
— Borealid 6/02/12

Eu consegui fazer tudo funcionar. Sem erros. Mas quando tento pressioná-lo, diz: Gravando objetos <bla> bla> Total <3/3> Para SERVIDOR 59fa0tweirdcod04 master> master Mas quando eu verifico os arquivos no servidor, não há nada.
— Roy van Zanten

@RoyvanZanten Você está olhando o repositório do servidor ou a cópia de trabalho do servidor ? Você precisa fazer um git checkoutse quiser que o WC reflita o que está no .gitdiretório (que é onde você pressionou).
— Borealid 6/02/2012

12

Você precisa confirmar pelo menos uma vez no mestre antes de criar uma nova ramificação.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.