47 votes

Git Log et montrer sur un repo nu

J'ai créé un dépôt nu sur un serveur de fichiers dans mon réseau local à la maison. Après cela, j'ai poussé une branche d'un référentiel existant à partir de mon ordinateur de bureau-pc à ce nouveau référentiel distant.

Poussant a parfaitement fonctionné, et il semble que toutes les données sont arrivés (un "git branch -va" me donne les données correctes). Mais je ne peux pas utiliser la commande git log ou git show sur le dépôt nu. je reçois un:

fatal: bad default revision 'HEAD'

ou tout simplement pas de sortie

est-ce normal pour les nus référentiels? Est-il une autre possibilité de visualiser à tout?

Edit: L'erreur fatale est résolu maintenant, mais je ne reçois aucune sortie de "git log" ou "git log instable". Même commande sur le bureau-pc fonctionne parfaitement

68voto

Richard Hansen Points 13044

Oui, c'est normal pour les nouveaux nu et non nu) référentiels.

Explication

HEAD est ce que Git appelle une symbolique de référence—une référence à une autre référence.

Non nu dépôts, HEAD indique normalement la branche est en cours d'extraction. Un nouveau commit sera la cause de la branche nommée par HEAD être avancée à consulter le nouveau commit. Lors de l' HEAD se réfère à un objet commit directement au lieu d'une branche, il est considéré comme détaché, le sens s'engage également à ne pas provoquer une branche de référence pour être avancés pour consulter les nouveaux commits (dangereux parce que la vérification d'un commit différent ou de la branche rendra la nouvelle s'engage inaccessible par toute référence existante, ce qui les rend difficiles à trouver et sous réserve de la collecte des ordures).

Nues dans les référentiels, HEAD indique le référentiel de la branche par défaut, de sorte que dans une copie de travail du dépôt git checkout origin est équivalent à git checkout origin/master si master est la branche par défaut (voir git help rev-parse pour les détails).

Lorsque Git initialise un nouveau référentiel, il initialise HEAD pour désigner refs/heads/master (en d'autres termes, HEAD de points à l' master de la branche par défaut). Cependant, il ne permet pas de créer une branche nommée master car il n'y a pas engage dans le référentiel pour l' master point encore.

Donc, jusqu'à ce que vous créez un master de la succursale ou de changement HEAD pour pointer vers une direction qui n'existe pas, vous obtiendrez ce message d'erreur lorsque vous exécutez une commande qui ressemble à l' HEAD (comme git log ou git show sans arguments).

Vous pouvez toujours utiliser des commandes qui ne sont pas d'examiner HEAD. Par exemple:

git log some_branch_that_exists

Fix

Pour se débarrasser de ce message d'erreur, vous pouvez effectuer l'une des opérations suivantes:

  • Variation HEAD pour pointer vers une direction qui n'existe pas:

    git symbolic-ref HEAD refs/heads/some_other_branch
    
  • Pousser un nouveau master de la branche dans le référentiel de quelque part d'autre
  • Créer un nouveau master de la branche en local:

    git branch master some_existing_commit
    

Visualisation

Pour visualiser le tout dans le référentiel, - je utiliser quelque chose comme ceci:

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

Notez que la commande ci-dessus va travailler même si HEAD vers inexistante de la branche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X