Dans mon rapport actuel, j'ai la sortie suivante:
$ git branch -a
* master
remotes/Origin/master
remotes/public/master
Je veux supprimer remotes/public/master
de la liste des branches:
$ 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 'remotes/public/master' de la liste des branches?
Mise à jour, tentative de la commande git Push
:
$ git Push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
Vous pourriez avoir besoin d'un nettoyage
git gc --Prune=now
ou vous pourriez avoir besoin d'un pruneau
git remote Prune public
Taillez
Supprime toutes les branches de suivi obsolètes sous <nom>. Ces branches obsolètes ont déjà été supprimées du référentiel distant référencé par <nom>, mais sont toujours disponibles localement dans "télécommandes/<nom>".
Avec l'option --dry-run, indique quelles branches seront élaguées, mais ne les élaguez pas réellement.
Cependant, il semble que ceux-ci auraient dû être nettoyés plus tôt avec
git remote rm public
rm
Supprimez la télécommande nommée <nom>. Toutes les branches de suivi à distance et les paramètres de configuration de la télécommande sont supprimés.
Il se peut donc que vous ayez édité manuellement votre fichier de configuration et que cela ne se soit pas produit, ou que vous ayez des problèmes de privilège.
Peut-être que ça recommence pour voir ce qui se passe.
Si vous consultez les journaux de révision , vous remarquerez que j'ai suggéré d'autres techniques "correctes", qui, pour une raison quelconque, ne souhaitaient pas fonctionner sur leur référentiel.
Je soupçonnais que l'OP avait fait quelque chose qui laissait son arbre dans un état incohérent qui le rendait un peu étrange, et il était nécessaire de git gc
pour réparer la gauche.
Habituellement git branch -rd Origin/badbranch
suffit pour numériser une branche de suivi locale, ou git Push Origin :badbranch
pour numériser une branche distante, et généralement vous jamais devez appeler git gc
Tout ce que vous devez faire c'est
git fetch -p
Cela supprimera toutes vos branches locales qui sont supprimées à distance.
Si vous êtes sur git 1.8.5+, vous pouvez le configurer automatiquement
git config fetch.Prune true
ou
git config --global fetch.Prune true
git Push public :master
Ceci effacerait la branche distante nommée master
comme Kent Fredric l’a fait remarquer.
Pour répertorier les branches de suivi à distance:
git branch -r
Pour supprimer une branche de suivi à distance:
git branch -rd public/master
Tout ce que vous devez faire c'est
$ git branch -rd Origin/whatever
C'est si simple. Il n'y a aucune raison d'appeler un gc ici.
git gc --Prune=now
n'est pas ce que vous voulez.
git remote Prune public
ou git remote Prune Origin
# si c'est la source distante
c'est ce que tu veux
La réponse acceptée ne fonctionnait pas pour moi lorsque l'arbitre était plein à craquer. Ceci fait cependant:
$ git remote add public http://anything.com/bogus.git
$ git remote rm public
Dans mon cas, j'essayais de supprimer les entrées sauvegardées dans .git/packed-refs
. Vous pouvez éditer ce fichier en texte brut et en supprimer les entrées que git br -D
ne sait pas toucher (au moins dans la version 1.7.9.5).
J'ai trouvé cette solution ici: https://stackoverflow.com/a/11050880/169568
git Push Origin --delete <branch name>
Référencé à partir de: http://www.gitguys.com/topics/adding-and-removing-remote-branches/
J'avais un problème similaire. Aucune des réponses n'a aidé. Dans mon cas, deux référentiels distants supprimés sont affichés 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:
find .git -name Repo
et supprimé les fichiers et répertoires correspondants
grep Repo -r .git
Cela a trouvé des fichiers texte dans lesquels j'ai supprimé les lignes correspondantes. Maintenant, tout semble aller pour le mieux.
Habituellement, vous devriez quitter ce travail pour git.
Seulement un peu lié, mais pourrait toujours être utile dans la même situation que nous avions - nous utilisons un partage de fichiers réseau pour notre référentiel distant. La semaine dernière, les choses fonctionnaient bien. Cette semaine, nous obtenions le message d'erreur "Remote Origin n'a pas annoncé de référence pour les références/têtes/maîtres de branche. Cette référence peut ne pas exister dans la télécommande ou être masquée par les paramètres d'autorisation".
Mais nous pensions que rien n'avait été fait pour corrompre les choses. Le NFS effectuant des instantanés, j'ai examiné chaque "version précédente" et constaté qu'il y a trois jours, la taille du référentiel en Mo était passée de 282 Mo à 33 Mo. Il existait environ 1 403 nouveaux fichiers et 300 dossiers. J'ai interrogé mes collègues et l'un d'entre eux avait essayé de faire une Push ce jour-là - puis l'avait annulée.
J'ai utilisé la fonctionnalité "Restauration" de NFS pour le restaurer juste avant cette date et maintenant tout fonctionne à nouveau correctement. J'ai essayé le pruneau précédemment, ne semblait pas aider. Peut-être que les nettoyages plus difficiles auraient fonctionné.
J'espère que cela pourra aider quelqu'un d'autre un jour!
Geai
Comme je ne connaissais pas git branch -rd
, la façon dont j'ai résolu ce problème est de traiter mon référentiel comme un référentiel distant et de le supprimer à distance. git Push . :refs/remotes/public/master
. Si les autres méthodes ne fonctionnent pas et que vous souhaitez vous débarrasser de certaines références étranges, cette méthode brute est sans appel. Il vous donne la précision exacte pour supprimer (ou créer!) Tout type de référence.