Como faço para excluir a origem / mestre no Git

10

Não consigo remover origin/masterdo meu servidor. Não faço ideia do porquê.

Captura de tela do meu terminal

A mensagem de erro é a seguinte

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'

Não, eu estou não usando Github .

Atcold
fonte
11
Por que você gostaria de fazer isso? Existem outros ramos?
Daniel B
De fato, existem outros ramos (verifique o link da imagem, na verdade, você poderia exibi-la para mim, por favor?). Tivemos que nos refazer mastere o fizemos em um ramo temporal que agora deveria se tornar master. O único problema é que não sei por que não consigo matar o mestre no servidor.
Atcold
2
Talvez não é a resposta que você está procurando, mas você poderia forçar-empurrar o rebased masterpara origin/master, efetivamente substituindo o antigo com o novo.
SlightlyCuban
Além da mensagem de erro, poste o comando que você está usando.
Kyralessa
@ Kyralessa, verifique a imagem.
Atcold

Respostas:

7

Curiosidade: até mesmo repositórios remotos estão em uma filial. Você está sendo rejeitado porque está tentando excluir o ramo que sua origem "fez check-out" no momento.

Se você tiver acesso direto ao repositório, basta abrir um diretório de relatório bare shell e usar o bom e velho velho git branchpara ver em qual origem da filial está atualmente. Para alterá-lo para outro ramo, você precisa usar git symbolic-ref HEAD refs/heads/another-branch.

Se você estiver usando um serviço como o Github ou o Gitorious, precisará usar a interface do usuário que a ferramenta fornece para fazer a alteração (consulte esta resposta para saber como fazer isso em ferramentas comuns).

SlightlyCuban
fonte
Awesome, ele trabalhou e deu-me a oportunidade de aprender mais sobre refsem Git ! Muito obrigado! (Sim, eu sabia sobre como lidar com isso no Github , mas não no nosso servidor pessoal.)
Atcold
12

Em vez de realmente remover o mestre do servidor, você pode substituí-lo assim:

git push origin otherbranch:master -f

Isso substituirá o mestre pelo conteúdo de outras ramificações, mas ainda será chamado de mestre no controle remoto. E então você pode conferir o master como master no seu local.

Kyralessa
fonte
OK, obrigado! Eu sei que posso forçar coisas, mas estava me perguntando exatamente por que não consegui remover o masterramo, e a resposta aceita explica o porquê.
Atcold
11
+1. Esta foi a única maneira de excluir um primeiro commit incorreto em controles remotos / origem / mestre.
ctn 26/05