Comment supprimer origine / master dans Git


10

Je ne peux pas supprimer origin/masterde mon serveur. Je ne sais pas pourquoi.

Capture d'écran de mon terminal

Le message d'erreur est le suivant

remote: error: By default, deleting the current branch is denied, because the next
remote: error: 'git clone' won't result in any file checked out, causing confusion.
remote: error: 
remote: error: You can set 'receive.denyDeleteCurrent' configuration variable to
remote: error: 'warn' or 'ignore' in the remote repository to allow deleting the
remote: error: current branch, with or without a warning message.
remote: error: 
remote: error: To squelch this message, you can set it to 'refuse'.
remote: error: refusing to delete the current branch: refs/heads/master
To acanzian@elab.ecn.purdue.edu:/export/home/a/elabshare/git/ID-check.git
 ! [remote rejected] master (deletion of the current branch prohibited)
error: failed to push some refs to 'acanzian@elab.ecn.purdue.edu:/export/home/a/elabshare/git/ID-check.git'

Non, je n'utilise pas Github .


1
Pourquoi voudriez-vous faire ça? Y a-t-il d'autres succursales?
Daniel B

En effet, il existe d'autres branches (vérifiez le lien vers l'image, en fait, pourriez-vous l'afficher pour moi, s'il vous plaît?). Nous avons dû rebaser master, et nous l'avons fait sur une branche temporelle qui devrait maintenant devenir master. Le seul problème est que je ne sais pas pourquoi je ne peux pas tuer le maître sur le serveur.
Atcold

2
Ce n'est peut-être pas la réponse que vous cherchez, mais vous pouvez forcer le rebasé masterà origin/masterle remplacer, en remplaçant efficacement l'ancien par le nouveau.
SlightlyCuban

En plus du message d'erreur, veuillez publier la commande que vous utilisez.
Kyralessa

@ Kyralessa, vérifiez la capture d'écran.
Atcold

Réponses:


7

Fait amusant: même les référentiels distants sont sur une branche. Vous êtes rejeté parce que vous essayez de supprimer la branche que votre origine a actuellement "retirée".

Si vous avez un accès direct au référentiel, vous pouvez simplement ouvrir un répertoire shell repor nu et utiliser le bon vieux git branchpour voir l'origine de la branche. Pour le changer dans une autre branche, vous devez utiliser git symbolic-ref HEAD refs/heads/another-branch.

Si vous utilisez un service comme Github ou Gitorious, vous devrez utiliser l'interface utilisateur que l'outil vous fournit pour effectuer le changement (voir cette réponse pour savoir comment le faire dans les outils courants).


Impressionnant, il a travaillé et il m'a donné la chance d' en apprendre davantage sur refsdans Git ! Merci beaucoup! (Oui, je savais comment y faire face sur Github , mais pas sur notre serveur personnel.)
Atcold

12

Au lieu de supprimer réellement le maître du serveur, vous pouvez le remplacer comme ceci:

git push origin otherbranch:master -f

Cela remplacera master par le contenu d'une autre branche, mais il sera toujours appelé master sur la télécommande. Et puis, vous pouvez vérifier maître en tant que maître dans votre section locale.


OK merci! Je sais que je peux forcer des choses, mais je me demandais exactement pourquoi je ne pouvais pas supprimer la masterbranche, et la réponse acceptée explique pourquoi.
Atcold

1
+1. C'était la seule façon de supprimer un mauvais premier commit sur les télécommandes / origine / master.
ctn
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.