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'.
Roy van Zanten
fonte
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 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 .

magro
fonte
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ãonenhuma 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.

user489998
fonte
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.

Borealid
fonte
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.

Fundhor
fonte