git log e show em um repository nu

Eu criei um repository nu em um servidor de arquivos na minha rede local em casa. Depois disso eu empurrei uma ramificação de um repository existente do meu desktop para este novo repository remoto.

Pushing funcionou perfeitamente e parece que todos os dados chegaram (um “git branch -va” me fornece os dados corretos). Mas eu não posso usar git log ou git show no repository nu. eu recebo um:

fatal: bad default revision 'HEAD'

ou simplesmente sem saída

isso é normal para repositorys nus? Existe outra possibilidade de visualizar tudo?

Edit: O erro fatal é resolvido agora, mas não recebo nenhuma saída de “git log” ou “git log unstable”. O mesmo comando no computador de mesa funciona perfeitamente

Sim, isso é normal para novos repositorys simples (e não nus).

Explicação

HEAD é o que Git chama de referência simbólica – uma referência a outra referência.

Em repositorys não nus, o HEAD normalmente indica qual ramificação está atualmente com check-out. Um novo commit fará com que o branch nomeado por HEAD seja avançado para se referir ao novo commit. Quando HEAD se refere a um object commit diretamente ao invés de um branch, ele é considerado desanexado , significando que commits adicionais não farão com que uma referência de ramificação seja avançada para se referir aos novos commits (perigoso porque o check out de um commit ou branch diferente renderiza o commit novos commits inacessíveis por qualquer referência existente, tornando-os difíceis de encontrar e sujeitos à garbage collection).

Em repositorys nus, HEAD indica a ramificação padrão do repository, de modo que em um clone da git checkout origin do repository git checkout origin é equivalente a git checkout origin/master se master é a ramificação padrão (veja git help rev-parse para detalhes).

Quando o Git inicializa um novo repository, ele inicializa o HEAD para se referir a refs/heads/master (em outras palavras, HEAD aponta para a ramificação master por padrão). No entanto, ele não cria uma ramificação chamada master porque não há commits no repository para o master apontar para ainda.

Então, até que você crie uma ramificação master ou altere HEAD para apontar para uma ramificação que existe, você receberá esse erro quando executar um comando que examine HEAD (como git log ou git show sem nenhum argumento).

Você ainda pode usar comandos que não examinam o HEAD . Por exemplo:

 git log some_branch_that_exists 

Consertar

Para se livrar da mensagem de erro, você pode fazer o seguinte:

  • Altere HEAD para apontar para uma ramificação que existe:

     git symbolic-ref HEAD refs/heads/some_other_branch 
  • Empurre um novo branch master para o repository de outro lugar
  • Crie um novo branch master localmente:

     git branch master some_existing_commit 

Visualização

Para visualizar tudo no repository, eu uso algo assim:

 git log --graph --oneline --date-order --decorate --color --all 

Observe que o comando acima funcionará mesmo se o HEAD estiver apontando para um ramo inexistente.

Note que esta mensagem irá mudar com o Git 2.6 (Q3 / Q4 2015)

Veja commit ce11360 (29 ago 2015) por Jeff King ( peff ) .
(Mesclado por Junio ​​C Hamano – gitster – em commit 699a0f3 , 02 set 2015)

Finalmente, essa mensagem será mais significativa:

log : diagnosticar vazio HEAD mais claramente

Se você iniciar ou clonar um repository vazio, a mensagem inicial da execução de ” git log ” não é muito amigável:

 $ git init Initialized empty Git repository in /home/peff/foo/.git/ $ git log fatal: bad default revision 'HEAD' 

Vamos detectar essa situação e escrever uma mensagem mais amigável:

 $ git log fatal: your current branch 'master' does not have any commits yet 

Também detectamos o caso de que ‘CABEÇA’ aponta para uma referência quebrada; isso deve ser ainda menos comum, mas é fácil de ver.
Note que não diagnosticamos todos os casos possíveis. Contamos com resolve_ref , o que significa que não obtemos informações sobre casos complexos. Por exemplo, ” --default master ” usaria dwim_ref para encontrar ” refs/heads/master “, mas notamos apenas que ” master ” não existe.
Da mesma forma, uma expressão sha1 complexa como ” --default HEAD^2 ” não será resolvida como um ref.

Mas tudo bem. Voltamos a uma mensagem de erro genérica nesses casos e é improvável que sejam usados ​​de qualquer maneira.
Capturar um “HEAD” vazio ou quebrado melhora o caso comum e os outros casos não são regredidos.

Enfrentei esse erro quando enviei pela primeira vez ao repository uma ramificação não mestre.

Para resolver o problema, eu tive que empurrar o master para o repo, e é isso!