C'est probablement une question stupide, mais je suis tout nouveau dans git et je vois une branche distante qui n'existe plus.
$ git branch -a
* master
remotes/origin/master
remotes/origin/production
Je ne pense pas que la branche de production existe à distance et je n'arrive pas à comprendre pourquoi elle s'affiche toujours localement. Comment puis-je supprimer / supprimer cette branche? Voici à quoi ressemble une tentative de suppression:
$ 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 vérifier la branche de production soi-disant distante, mais obtenez 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 je fais. Toute aide serait appréciée.
git branch -a
après ungit fetch
?Réponses:
Tu dois faire:
la source
Il y a donc deux problèmes. Dans les deux cas, rappelez-vous que Git est distribué.
Première. Quand tu fais des choses comme
l'opération est effectuée sur votre dépôt local PAS sur l'ordinateur distant. En d'autres termes, votre repo local rapporte toutes les succursales dont il a connaissance. Il peut s'agir de branches locales (comme «master») ou de branches distantes qu'il a récupérées à partir d'une télécommande. Depuis la dernière extraction, la branche «production» du dépôt distant a changé, mais votre dépôt local ne le sait pas. La réponse des manojlds est correcte. Courir
pour enlever les branches périmées.
La commande 'git push origin: production' est utilisée pour supprimer la branche du repo git de l'ordinateur distant. Pas votre repo local. Dans ce cas, quelqu'un d'autre a déjà supprimé la branche sur le référentiel git de l'ordinateur distant, vous voyez donc ce message d'erreur.
Voici un lien qui résume ces commandes.
Le deuxième problème concerne le paiement.
Lors de l'extraction d'une succursale, vous voulez le faire à partir d'une succursale locale et non de la succursale distante. C'est pourquoi vous obtenez l'erreur concernant une tête détachée. Le repo git-notes a une bonne explication du problème en détail sanglant. Fondamentalement, la phrase clé est
Maintenant, comment vérifier une branche locale, qui est la même que la branche distante?
Facile, vous créez une succursale locale, au moment du paiement de la succursale distante.
la source
est correct, il suffit d'ajouter que vous pouvez utiliser l'
--dry-run
option, qui indique quelles branches seront élaguées de votre dépôt local, mais ne les élague pas réellementla source