Como remover uma ramificação localmente?

159

Eu tenho um mestre e um ramo de desenvolvimento no meu repositório. Quero remover a ramificação principal do meu computador para não me comprometer acidentalmente com ela (aconteceu ...).

Há perguntas aqui sobre como excluir ramificações local e remotamente, mas não consegui descobrir como excluir apenas uma ramificação localmente.

Uma resposta disse para usar isso:

git branch -d local_branch_name

Mas eu tentei isso e o ramo ainda aparece no aplicativo GitHub.

Nate
fonte
Qual é a saída desse comando? Em que ramo você está? Como está aparecendo no console?
SLaks
@Laks Eu tive um tipo na minha pergunta. No console, na verdade, ele diz que a ramificação foi excluída, mas no aplicativo GitHub (mesmo após a reinicialização), a ramificação e a confirmação ainda estão visíveis. A saída éDeleted branch master (was e8a8e29).
Nate
O GitHub para Windows também mostra ramificações remotas
#
@SLaks Então, depois de excluir a ramificação localmente, se eu clicar nela no aplicativo GitHub for Windows, será apenas re-clonada? Estou querendo me impedir de fazer alterações diretamente no ramo mestre.
Nate

Respostas:

114

Eu acho que (com base em seus comentários), que eu entendo o que você quer fazer: você quer a sua cópia local do repositório para ter nem o ramo local ordinária master, nem o ramo de rastreamento remoto origin/master, mesmo que o repositório que você clonado-o github - possui uma ramificação local masterque você não deseja excluir da versão do github.

Você pode fazer isso excluindo o ramo de rastreamento remoto localmente, mas ele simplesmente volta sempre que você pede ao seu git para sincronizar seu repositório local com o repositório remoto, porque o seu git pergunta ao git "quais ramos você tem" e diz "eu tenho master" para que seu git (re) crie origin/masterpara você, para que seu repositório tenha o que ele possui.

Para excluir sua ramificação de rastreamento remoto localmente usando a interface da linha de comandos:

git branch -d -r origin/master

mas, novamente, ele retornará apenas às ressincronizações. Ela é possível derrotar este bem (usando remote.origin.fetchmanipulação), mas você é provavelmente melhor fora apenas a ser disciplinado o suficiente para não criar ou modificar masterlocalmente.

torek
fonte
Relacionado: Como clonar um único ramo no git?
Tobias Kienzler
99

Forçar exclusão da ramificação local:

$ git branch -D <branch_name>

[ NOTA ]:

"-D" é a opção de exclusão forçada.


Benyamin Jafari
fonte
6
Se eu excluir uma ramificação local que tinha um conjunto upstream e executar um push normal, ela não excluirá a ramificação remota, certo?
Fueled By Coffee
1
@FueledByCoffee Aqui está a resposta para esta pergunta
Benyamin Jafari
17

Até onde eu entendo o problema original, você adicionou confirmações ao mestre local por engano e não fez essas alterações ainda. Agora você deseja cancelar suas alterações e espera excluir as alterações locais e criar uma nova ramificação principal a partir da remota.

Você pode apenas redefinir suas alterações e recarregar o mestre do servidor remoto:

git reset --hard origin/master
Eugene Kaurov
fonte
13

O aplicativo Github para Windows mostra todas as ramificações remotas de um repositório. Se você excluiu a ramificação localmente com $ git branch -d [branch_name], a ramificação remota ainda existe no seu repositório do Github e aparecerá independentemente do aplicativo Windows Github.

Se você deseja excluir a ramificação completamente (remotamente também), use o comando acima em combinação com $ git push origin :[name_of_your_new_branch]. Aviso: este comando apaga todas as ramificações existentes e pode causar perda de código. Cuidado, acho que não é isso que você está tentando fazer.

No entanto, sempre que você excluir a ramificação local, a ramificação remota ainda aparecerá no aplicativo. Se você não quiser continuar fazendo alterações, ignore-o e não clique, caso contrário, poderá clonar o repositório. Se você tiver mais alguma dúvida, entre em contato.


fonte
1

você precisa mudar para outro ramo e tentar o mesmo.

git branch -d

Kumar Vaduganathan
fonte
1
Isso deveria ser uma resposta? Ou uma pergunta de esclarecimento? Ou uma pergunta simples? É tão curto que não sei dizer. Você gostaria de elaborar?
Yunnosch 20/09/19
0

Pelas suas tags, presumo que você esteja usando o Github. Por que não criar algumas regras de proteção de ramificação para sua ramificação mestre? Dessa forma, mesmo se você tentar pressionar para dominar, ele a rejeitará.

1) Vá para a guia 'Configurações' do seu repositório no Github.

2) Clique em 'Ramos' no menu lateral esquerdo.

3) Clique em 'Adicionar regra'

4) Digite 'master' para um padrão de ramificação.

5) Marque 'Exigir revisões de solicitação de recebimento antes da mesclagem'

Eu também recomendaria fazer o mesmo para o seu ramo de desenvolvimento.

Qamar Stationwala
fonte