É seguro limpar ramificações upstream em um repositório bifurcado?

É seguro limpar ramificações upstream em um repositório bifurcado?

Quando eu bifurco um repositório, todas as ramificações do repositório upstream vêm com ele. Às vezes, há um número esmagador de ramificações upstream quando eu realmente me importo apenas com as ramificações nas quais estou trabalhando. Parece redundante ter as mesmas ramificações em dois repositórios quando posso configurar os dois controles remotos em meu repositório local.

Por exemplo:

O repositório A possui filiais A1,...,A1000. Quando faço um fork deste repositório no GitHub, recebo um novo repositório B com as mesmas ramificações (A1,...,A1000). Gostaria que o repositório B tivesse apenas as ramificações nas quais estou trabalhando (por exemplo, B1 e B2).

É possível (e até recomendado) remover ramificações upstream do meu fork para tornar as coisas mais simples/limpas para mim e minha equipe (ou seja, as únicas ramificações em nosso fork são as ramificações nas quais estamos trabalhando)? Eu pelo menos ainda preciso do branch padrão do repositório upstream?

Responder1

É possível (e até recomendado) remover ramificações upstream do meu fork para tornar as coisas mais simples/limpas para mim e minha equipe (ou seja, as únicas ramificações em nosso fork são as ramificações nas quais estamos trabalhando)?

Certamente é possível, embora não seja realmente necessário, remover ramificações a montante da bifurcação. Quando você git clonecria o repositório bifurcado, ele clonará apenas o branch padrão (a menos que você especifique um nome de branch, e ele o clonará). O histórico de outras filiais nem existirá localmente, a menos que você git fetchescolha a filial específica que deseja ou git fetch --all.

Em outras palavras, não haverá uma melhoria significativa em seu fluxo de trabalho com a exclusão dessas ramificações upstream. O único benefício que consigo pensar é que pode ser mais fácil encontrar uma filial de interesse se houver menos filiais para examinar.

Em qualquer caso, o comando para excluir uma ramificação remota (isso não exclui a ramificação correspondente localmente, se existir) é git push origin :branchToBeDeleted.

A exclusão de uma ramificação local (apenas no repositório local, não na bifurcação remota) pode ser feita com git branch -d branchToBeDeleted.

Mais informações sobre como excluir filiais locais e remotas aqui.


Eu pelo menos ainda preciso do branch padrão do repositório upstream?

Resumindo, seria aconselhável manter o branch padrão. Acho que não gitvou permitir que você exclua a ramificação remota padrão com a sintaxe fornecida acima (como alguém tentou aqui):

remote: error: refusing to delete the current branch: refs/heads/master
To [email protected]:<user>/<repo>.git
! [remote rejected] master (deletion of the current branch prohibited)
error: failed to push some refs to '[email protected]:<user>/<repo>.git'

Se o branch padrão for aquele que você não deseja manter, acesse as configurações desse repositório no GitHub ou em qualquer plataforma de hospedagem Git que você usa e altere o branch padrão antes de tentar excluir o branch em questão.

informação relacionada