Devo excluir um branch após mesclá-lo?


94

Após mesclar um branch, você o exclui do repositório?
Porém, é uma boa prática ou não?

Normalmente crio muitos branches, já que não quero interromper minha versão atual e gostaria de excluí-los para manter as coisas em ordem.
No entanto, se você trabalha com Assembla ou GitHub, suas solicitações de mesclagem de branches antigos serão salvas no site, portanto, se você excluí-las, receberá um erro, pois não será possível buscá-las ...

Normalmente, como fazer isso?

Respostas:


72

Não há problema em deletar branches que foram mesclados. Todos os commits ainda estão disponíveis no histórico, e mesmo na interface do GitHub, eles ainda irão aparecer (veja, por exemplo, este PR que se refere a um fork que eu excluído depois que o PR foi aceito).


Você disse que todos os commits ainda estão disponíveis no histórico. Se eu visualizar um projeto no github.com, acho que isso é verdade. No entanto, no aplicativo de desktop Github para Mac, parece que você não pode mais ver o histórico de commits para o branch mesclado. Estou enganado?
peacetype

Eu acrescentaria que, se você não estiver usando um cliente git, especialmente se não estiver usando um com um gui, ter os branches pode ser útil para entender bem o seu log. Isto é, uma vez que você não tem um github / gitlab / outro gui para olhar, manter os nomes dos ramos permite que você tenha um lugar simples para fazer referência ao histórico, além do histórico de commits - que de outra forma seria perdido ao deletar o ramo. Alguém, por favor, me avise se esta última afirmação estiver errada.
Raj

@Raj você já tem isso, na forma de Merge branch fix-foo-barmensagens de commit. Tente e git log --grep="Merge branch", em seguida, lance suas próprias âncoras de interesse via git checkout -b curious-change. Além disso, nada é perdido ao deletar um branch - exceto o mero ponteiro "branchname → commithash" (que é o que um branch realmente é, não importa local ou remoto).
ulidtko

@fred-foo A questão se é uma boa prática não foi respondida. (Eu tenho a mesma pergunta)
Esger

27

Eu definitivamente limpo minhas filiais depois que elas são incorporadas.

Usamos o GitLab e mesclamos solicitações no trabalho, de modo que as informações históricas sobre ramos são armazenadas lá; Não preciso deles bagunçando minha lista de ramos e, quando olho para o fork de um colega de trabalho, idealmente gostaria apenas de ver os ramos de seu desenvolvimento ativo atual. Se estou tentando examinar algum código em seu branch, quero ser capaz de examinar apenas alguns branches atualmente ativos, e não todos os recursos ou correções em que já começaram a trabalhar.

O acima se aplica ao BitBucket e GitHub também.

A única razão que você pode ter para não deletar um branch pós-mesclagem é saber onde um determinado recurso terminou, mas os commits de mesclagem (e git merge --no-ffse você realmente quiser) tornam isso irrelevante.


3
Aparentemente, o GitHub sempre faz --no-ff, então não perderemos o fato de que esse era um branch mesmo nessas situações.
joeytwiddle

7
@joeytwiddle: presumindo que você esteja usando a própria interface do GitHub para mesclar o branch, sim!
Asherah


0

Só para esclarecer, branch, do ponto de vista do git, é apenas um link para algum commit. Ao excluir o branch, você não excluirá os commits do git repo. Claro, independente commits serão limpos depois de algum tempo por meio do coletor de lixo git.

Para sua informação: normalmente estamos mesclando branches no master por meio da interface bitbucket. Lá você pode definirdelete feature branch after merge bandeira.

Se você precisa lidar com branches muito antigos, você poderia dar uma olhada em alguns utilitários, por exemplo este .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.