O que fazer com ramificação após mesclagem

341

Eu tinha dois ramos: mastere branch1. Eu apenas fundiu branch1volta para mastere eu estou feito com esse ramo. Devo excluí-lo ou deixá-lo descansar? A exclusão causará perda de dados?

Alison
fonte
Veja também: Como usar o git merge --squash?
Martin Thoma

Respostas:

410

Após a mesclagem, é seguro excluir a ramificação:

git branch -d branch1

Além disso, o git avisará você (e se recusará a excluir a ramificação) se achar que você ainda não a fundiu completamente. Se você excluir com força uma ramificação (com git branch -D) que ainda não foi completamente mesclada, precisará fazer alguns truques para recuperar as confirmações inalteradas (veja abaixo).

Existem algumas razões para manter um ramo por perto. Por exemplo, se for um ramo de recurso, você poderá executar correções de bug nesse recurso ainda dentro desse ramo.

Se você também deseja excluir a ramificação em um host remoto, pode:

git push origin :branch1

Isso excluirá forçosamente a ramificação do controle remoto (isso não afetará os repositórios já com check-out e não impedirá que alguém com acesso por push a repita / crie novamente).


git reflogmostra as revisões efetuadas recentemente. Qualquer ramificação que você fez check-out no histórico recente do repositório também aparecerá lá. Além disso, git fsckserá a ferramenta de escolha em qualquer caso de perda de commit no git.

Jonas Schäfer
fonte
Se você deseja salvar a ramificação, pode criar uma tag antes de excluí-la. Se você quiser voltar a esse ponto, poderá fazer o checkout dessa tag.
Joqus
3
@ Joqus Eu prefiro sugerir mantê-lo como um ramo nesse caso. Só não publique.
Jonas Schäfer
Apenas no caso - se você quiser "mesclar completamente" o ramo antes de excluí-lo, basta empurrá-lo após a mesclagem, mas antes de excluir. Algo comogit checkout master && git merge branch1 && git push origin branch1 && git branch -d branch1
avtomaton
25

Prefiro RENAME em vez de DELETE

Todos os meus ramos são nomeados na forma de

  • Fix/fix-<somedescription> ou
  • Ftr/ftr-<somedescription> ou
  • etc.

Usando Torre como meu front-end git, ele ordenadamente organiza todo o Ftr/, Fix/, Test/etc em pastas.
Depois que terminar um ramo, eu os renomeio para Done/...-<description>.

Dessa forma, eles ainda estão lá (o que pode ser útil para fornecer histórico) e eu sempre posso voltar sabendo o que era (recurso, correção, teste etc.)

Yohst
fonte
4
Você também renomeia as ramificações remotas?
VitalyB
21
Parece redundante manter esses ramos e insano renomeá- los. Estou faltando alguma coisa aqui? Você sempre pode recriar o ramo. stackoverflow.com/questions/3640764/…
ksav 26/10/18
não faz sentido manter filiais depois que eles foram fundidas
rastaman
2
+1 na idéia de renomear para Corrigir, Testar e Concluir ... Manter filiais é como os contratados são pagos na minha empresa.
Jspfreire 03/06/19
1

Se você seguir em frente e EXCLUIR o ramo após mesclá-lo.
Apenas cuide de
todas as referências de URLs de hiperlinks dos seus ramos DELETED, serão QUEBRADAS .

ahmednabil88
fonte