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 [email protected]:/export/home/a/elabshare/git/ID-check.git
 ! [remote rejected] master (deletion of the current branch prohibited)
error: failed to push some refs to '[email protected]:/export/home/a/elabshare/git/ID-check.git'

Non, je n'utilise pas Github .

Atcold
la source
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).

Légèrement cubain
la source
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.

Kyralessa
la source
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