156 votes

git branch-av' montrant branche à distance qui n'existe plus

C'est probablement une question stupide, mais je suis tout nouveau à git et je vois une branche distante qui n'existe plus.

$ git branch -a
* master
  remotes/origin/master
  remotes/origin/production

Je ne crois pas que la branche de production existe à distance et ne peut pas comprendre pourquoi il montre encore localement. Comment puis-je supprimer/supprimer cette branche? Voici ce qu'une tentative pour enlever ça ressemble:

$ git push origin :production

error: unable to push to unqualified destination: production
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to 'git@IP:puppet.git'

Je peux extraire le soi-disant à distance branche de production, mais d'obtenir ceci:

$ git checkout origin/production
Note: checking out 'origin/production'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at c323996... added powerdns module, no really

Je n'ai aucune idée de ce que le diable, je suis en train de faire. Toute aide serait appréciée.

312voto

manojlds Points 96599

Que vous avez à faire:

git remote prune origin

53voto

Pablo Maurin Points 569

Il y a donc deux problèmes. Dans les deux cas, n'oubliez pas de Git est distribué.

D'abord. Quand vous faites des choses comme

$ git branch -a

l'opération est effectuée sur votre repo PAS l'ordinateur distant. En d'autres termes, votre local pensions de se rendre compte de toutes les branches qui en sait quelque chose. Celles-ci pourraient être des branches locales (comme le "maître") ou à distance branches qu'il a récupéré à partir d'une télécommande. Depuis la dernière extraction, la "production", branche de la télécommande repo a changé, mais votre local pensions ne le sait pas. La réponse de manojlds, est correcte. Exécuter

$ git remote pruneau origine

pour éliminer les branches.

Le "git push origin :la production de "commande" est utilisé pour la suppression de la branche à partir de l'ordinateur distant git du repo. Pas votre local repo. Dans ce cas, quelqu'un d'autre a déjà supprimé le branche sur l'ordinateur distant git du repo, si vous voyez ce message d'erreur.

Voici un lien qui résume ces commandes.

Le deuxième problème porte sur la caisse.

Lors de la vérification d'une succursale, vous voulez le faire à partir d'un local succursale de, pas de succursale à distance. C'est pourquoi vous obtenez le message d'erreur sur un décollement de la TÊTE. Le git-notes repo a une bonne explication du problème en détail sanglant. Fondamentalement, la phrase clé est

Toutefois, lorsque vous commander quelque chose qui n'est pas propre, locale, nom de la direction générale, puis à la TÊTE n'est plus une référence symbolique à quoi que ce soit. Au lieu de cela, il contient en fait le hachage SHA-1 (la validation id) de la livraison, vous êtes de commutation.

Maintenant, comment découvrez une branche locale, qui est la même que la distance de la branche?

Facile, vous créer une branche locale, au moment de la commande à distance de la branche.

$ git checkout -b my_local_branch origine/de production

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