Question Comment supprimer une référence de branche distante invalide de Git?


Dans mon repo 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.

En outre, la sortie de git remote est étrange, car il ne liste pas public:

$ git remote show 
origin

Comment puis-je supprimer 'remotes / public / master' de la liste des branches?

Mise à jour, essayé le git push commander:

$ git push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

659
2017-07-02 02:39


origine


Réponses:


Vous pourriez avoir besoin d'un nettoyage

git gc --prune=now

ou vous pourriez avoir besoin d'un pruneau

git remote prune public

prune

Supprime toutes les branches de suivi périmées 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 "distants / <nom>".

Avec l'option --dry-run, indiquez quelles branches seront élaguées, mais ne les élaguez pas réellement.

Cependant, il semble qu'ils auraient dû être nettoyés plus tôt

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 enlevés.

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 courrez-le encore et voir ce qui se passe.

Contexte du conseil

Si vous regardez dans le les journaux de révision, vous remarquerez que j'ai suggéré plus de techniques "correctes", qui pour une raison quelconque ne voulaient pas travailler sur leur dépôt.

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 bizarrement, et git gc était nécessaire pour réparer le cruft gauche.

habituellement  git branch -rd origin/badbranch est suffisant pour nuking une branche locale de suivi, ou git push origin :badbranch pour nuking une branche distante, et d'habitude vous serez jamais besoin d'appeler git gc


664
2017-07-02 02:42



Tout ce que vous devez faire 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 définir automatiquement

git config fetch.prune true

ou

git config --global fetch.prune true

627
2017-11-24 10:38



git push public :master

Cela supprimerait la branche distante nommée master comme Kent Fredric l'a souligné.

Pour répertorier les branches de suivi à distance:

git branch -r

Pour supprimer une branche de suivi à distance:

git branch -rd public/master

308
2017-07-02 02:47



Tout ce que vous devez faire est

$ git branch -rd origin/whatever 

C'est si simple. Il n'y a aucune raison d'appeler un gc ici.


152
2017-07-07 20:59



git gc --prune=now ce n'est pas ce que tu veux.

git remote prune public

ou git remote prune origin # si c'est la source distante

est ce que tu veux


69
2018-06-08 18:18



La réponse acceptée n'a pas fonctionné pour moi quand l'arbitre a été emballé. Cela cependant:

$ git remote add public http://anything.com/bogus.git
$ git remote rm public

28
2018-01-12 04:21



Dans mon cas, j'essayais de supprimer les entrées enregistrées dans .git/packed-refs. Vous pouvez modifier ce fichier texte brut et en supprimer les entrées git br -D ne sait pas comment toucher (au moins dans ver 1.7.9.5).

J'ai trouvé cette solution ici: https://stackoverflow.com/a/11050880/1695680


7
2017-12-01 23:47



git push origin --delete <branch name>

Référencé de: http://www.gitguys.com/topics/adding-and-removing-remote-branches/


4
2017-10-02 18:28