29 votes

Impossible de supprimer une branche distante créée involontairement

$ git branch -a
* SocialAct
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/SocialAct
  remotes/origin/social

Je veux supprimer la branche distante "remotes/origin/social", et j'ai appliqué la commande suivante :

$ git branch -d -r origin/social
Deleted remote branch origin/social (was 26f6f61).

Mais je n'ai aucune idée de comment apporter ces changements à distance pour que les branches soient supprimées de l'origine et que tout le monde puisse voir les changements. J'ai essayé git push mais cela ne fonctionne pas.

N'importe quelle aide.

45voto

Nathan McDaniel Points 636

J'ai eu cette erreur (de ci-dessus) :

Merci. En fait, j'ai remarqué cette solution et j'ai essayé plus tôt. Mais ceci donne l'erreur suivante... $ git push origin :heads/socail Enter passphrase pour la clé '/h/.ssh/id_rsa' : error : unable to push to unqualified destination : heads/socail Le destination ne correspond pas à une ne correspond à une référence existante sur le serveur distant et ne commence avec refs/, et nous sommes incapables de deviner un préfixe basé sur la référence source. error : failed to push some refs to git@xxxxxx.git' - Himel 24 mai '10 à 9:37

Il semble s'être embrouillé pour savoir si je l'avais supprimé à distance ou non. Je l'ai contourné comme ça :

git push origin HEAD:branch_to_delete

git push origin :branch_to_delete

Ça a marché pour moi. Utilisation : version git 1.7.3.1.msysgit.0 .

7voto

Arkaitz Jimenez Points 10651

git push origin :social
Mais vous devez également supprimer localement, avant ou après.

7voto

bfrohs Points 9092

Comme mentionné par @Josh dans un commentaire sur Réponse de Nathan McDaniel Si la branche n'existe plus dans le référentiel distant, cela est probablement dû au fait que la branche n'existe plus dans le référentiel distant. Cela provoque git branch -a pour continuer à montrer la branche sous origin (ou quel que soit le nom que vous avez donné à ce dépôt distant particulier), mais la suppression de la branche sur le dépôt distant est impossible car elle n'existe plus sur le dépôt distant. Cela a pu être causé par la suppression de la branche sur le référentiel distant à partir d'un autre ordinateur (en plus du fait que la branche n'existe plus sur le référentiel distant). git pull y git fetch ne pas supprimer les références aux branches distantes qui ont été supprimées du référentiel distant).

La solution

Il suffit de supprimer toutes les branches de suivi à distance qui ont déjà été supprimées du référentiel distant avec git remote prune :

git remote prune REMOTENAME

Par exemple, si le nom de votre télécommande est origin (probable), la commande ci-dessus se présenterait comme suit :

git remote prune origin

D'après la documentation fournie avec git :

git remote prune [-n | --dry-run] <name>

Supprime toutes les branches de suivi à distance périmées sous <name> . Ces branches périmées ont déjà été supprimées du référentiel distant référencé par <name> mais sont toujours disponibles localement dans "remotes/".

Avec --dry-run indique les branches à élaguer, mais ne les élague pas réellement.

2voto

abhinav Points 3

La commande ci-dessous supprimera la branche de suivi à distance mais pas la branche qui existe sur le site distant.

$ git branch -d -r origin/social
Deleted remote branch origin/social (was 26f6f61).

Pour supprimer la branche distante :

git push origin  :social

Cela supprimera automatiquement la branche de suivi à distance, c'est-à-dire remotes/origin/social.

-3voto

Noufal Ibrahim Points 32200

La suppression des branches distantes est décrite en détail dans le document suivant aquí .

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