Dans mon référentiel actuel, j'ai la sortie suivante:
$ git branch -a
* master
remotes/origin/master
remotes/public/master
Je souhaite supprimer remotes/public/master
de la liste des succursales:
$ git branch -d remotes/public/master
error: branch 'remotes/public/master' not found.
De plus, la sortie de git remote
est étrange, car elle ne répertorie pas public
:
$ git remote show
origin
Comment puis-je supprimer «télécommandes / public / maître» de la liste des succursales?
Mettre à jour, essayé la git push
commande:
$ git push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
git
branch
remote-branch
cmcginty
la source
la source
git remote prune [remote-name]
ougit fetch -p [remote-name]
non dans votre scénario? Le faire avecgit gc
est beaucoup plus énergique que ce qui est normalement nécessaire.git remote prune [remote-name]
ne fonctionnera pas avec git svn, bien quegit gc
...git branch -rd origin/name
ne fonctionne pas cependant. @Casey, vous devriez probablement sélectionner la deuxième réponse - c'est un peu moins dangereux.master
... en particulier lors de la suppression sur la télécommande.Réponses:
Vous pourriez avoir besoin d'un nettoyage:
ou vous pourriez avoir besoin d'un pruneau:
Cependant, il semble que ceux-ci auraient dû être nettoyés plus tôt avec
Il se peut donc que vous ayez modifié manuellement votre fichier de configuration et que cela ne se soit pas produit, ou que vous ayez des problèmes de privilèges.
Peut-être recommencez et voyez ce qui se passe.
Contexte des conseils
Si vous jetez un œil dans les journaux de révision , vous remarquerez que j'ai suggéré des techniques plus «correctes» qui, pour une raison quelconque, ne voulaient pas travailler sur leur référentiel.
Je soupçonnais que le PO avait fait quelque chose qui laissait leur arbre dans un état incohérent qui le faisait se comporter un peu étrangement, et
git gc
était obligé de réparer la gauche derrière.git branch -rd origin/badbranch
Est généralement suffisant pour neutraliser une branche de suivi locale ougit push origin :badbranch
pour nuquer une branche distante, et vous n'aurez généralement jamais besoin d'appelergit gc
la source
git gc
n'est pas nécessaire ici, maisgit remote prune
je me sens plus en sécurité que de supprimer manuellement des choses avecgit branch -rd
, car git vérifie quelles branches distantes sont effectuées.Tout ce que vous devez faire c'est
Il supprimera toutes vos succursales locales qui sont supprimées à distance.
Si vous utilisez git 1.8.5+, vous pouvez le régler automatiquement
ou
la source
Cela supprimerait la branche distante nommée
master
comme Kent Fredric l'a souligné.Pour répertorier les branches de suivi à distance:
Pour supprimer une branche de suivi à distance:
la source
git branch -rd removed_remote/branch
travaillé pour moi, alors que legit gc --prune=now
était sans valeur.git prune
sans aucun problème, mais mon collègue qui a bifurqué notre dépôt principal ** POURRAIT SEULEMENT ** utiliser lagit branch -rd public/master
solution -style pour nettoyer son environnement.git branch -rd public/master
c'est ce qui me manquait. J'avaisheroku/master
etherkou/master
... lol woopsTout ce que vous devez faire c'est
C'est si simple. Il n'y a aucune raison d'appeler un GC ici.
la source
git branch -rd $(git branch -r)
puis rétablir les valides en faisant une extraction.git config -e
pour renommer ma télécommande. J'ai renommé la télécommandemine
enorigin
. Ensuite, c'est la solution qui a fonctionné le mieux pour moi:git branch -rd $(git branch -r | grep 'mine/')
git gc --prune=now
n'est pas ce que tu veux.ou
git remote prune origin
# si c'est la source distanteest ce que tu veux
la source
La réponse acceptée n'a pas fonctionné pour moi lorsque la référence a été emballée. Cependant, cela:
la source
Dans mon cas, j'essayais de supprimer les entrées enregistrées
.git/packed-refs
. Vous pouvez modifier ce fichier texte brut et en supprimer les entréesgit br -D
ne savent pas comment toucher (au moins dans la version 1.7.9.5).J'ai trouvé cette solution ici: https://stackoverflow.com/a/11050880/1695680
la source
git gc
, quand il compresse vos commits dans une archive hautement compressée, il a également déplacé les références dans un seul fichier texte brut, peut-être à des fins d'optimisation; J'espère que les futures versions de git pourrontgit br -D ...
contenir des références.Référencé depuis: http://www.gitguys.com/topics/adding-and-removing-remote-branches/
la source
Je ne le savais pas
git branch -rd
, donc la façon dont j'ai résolu des problèmes comme celui-ci est de traiter mon référentiel comme un référentiel distant et de faire une suppression à distance.git push . :refs/remotes/public/master
. Si les autres façons ne fonctionnent pas et que vous avez une référence étrange dont vous voulez vous débarrasser, cette façon brute est infaillible. Il vous donne la précision exacte pour supprimer (ou créer!) Tout type de référence.la source
Seulement légèrement liés, mais pourraient être utiles dans la même situation que nous - nous utilisons un partage de fichiers réseau pour notre référentiel distant. La semaine dernière, les choses fonctionnaient, cette semaine, nous recevions l'erreur "L'origine à distance n'a pas annoncé la référence pour les références de branche / têtes / maître. Cette référence peut ne pas exister dans la télécommande ou peut être masquée par les paramètres d'autorisation"
Mais nous pensions que rien n'avait été fait pour corrompre les choses. Le NFS fait des instantanés, j'ai donc passé en revue chaque "version précédente" et j'ai vu qu'il y a trois jours, la taille en Mo du référentiel était passée de 282 Mo à 33 Mo, et environ 1403 nouveaux fichiers et 300 dossiers existaient désormais. J'ai interrogé mes collègues et l'un d'entre eux avait essayé de faire un effort ce jour-là - puis l'avait annulé.
J'ai utilisé la fonctionnalité "Restauration" de NFS pour la restaurer juste avant cette date et maintenant tout fonctionne à nouveau correctement. J'ai essayé le pruneau auparavant, ne semblait pas aider. Peut-être que les nettoyages plus durs auraient fonctionné.
J'espère que cela pourrait aider quelqu'un d'autre un jour!
Geai
la source
J'avais un problème similaire. Aucune des réponses n'a aidé. Dans mon cas, j'avais deux référentiels distants supprimés apparaissant en permanence.
Ma dernière idée était de supprimer toutes les références à la main.
Disons que le référentiel s'appelle «Repo». J'ai fait:
J'ai donc supprimé les fichiers et répertoires correspondants du dossier .git ( ce dossier se trouvait dans votre application Rails ou sur votre ordinateur https://stackoverflow.com/a/19538763/6638513 ).
Ensuite, j'ai fait:
Cela a trouvé des fichiers texte dans lesquels j'ai supprimé les lignes correspondantes. Maintenant, tout semble aller bien.
Habituellement, vous devriez quitter ce travail pour git.
la source