git - Como posso arquivar ramificações do git?




6 Answers

Eu acredito que a maneira correta de fazer isso é marcar o ramo. Se você excluir a ramificação depois de tê-la marcado, você terá efetivamente mantido a ramificação, mas não sobrecarregará sua lista de ramificações.

Se você precisar voltar para a agência, verifique a tag. Ele efetivamente restaurará o ramo da tag.

Para arquivar e excluir o ramo:

git tag archive/<branchname> <branchname>
git branch -d <branchname>

Para restaurar o ramo algum tempo depois:

git checkout -b <branchname> archive/<branchname>

O histórico do ramo será preservado exatamente como foi quando você o marcou.

Eu tenho algumas ramificações antigas no meu repositório git que não estão mais em desenvolvimento ativo. Eu gostaria de arquivar os ramos para que eles não apareçam por padrão quando executando git branch -l -r. Eu não quero deletá-los, porque quero manter o histórico. Como posso fazer isso?

Eu sei que é possível criar um ref fora de refs / heads. Por exemplo, refs / archive / old_branch. Há alguma consequência de fazer isso?




Você pode arquivar os ramos em outro repositório. Não é tão elegante, mas eu diria que é uma alternativa viável.

git push git://yourthing.com/myproject-archive-branches.git yourbranch
git branch -d yourbranch



Estendendo a answer de Steve para refletir as mudanças no controle remoto, eu fiz

 git tag archive/<branchname> <branchname>
 git branch -D <branchname>
 git branch -d -r origin/<branchname>
 git push --tags
 git push origin :<branchname>

Para restaurar do controle remoto, veja esta questão .




Estou usando os aliases a seguir para ocultar ramificações arquivadas:

[alias]
    br = branch --no-merge master # show only branches not merged into master
    bra = branch                  # show all branches

Então git br para mostrar ramos ativamente desenvolvidos e git bra para mostrar todos os ramos, incluindo os "arquivados" .




Minha abordagem é renomear todas as ramificações com as quais não me importo com um prefixo "trash_" e usar:

git branch | grep -v trash

(com uma ligação de chave shell)

Para manter a coloração do ramo ativo, seria necessário:

git branch --color=always | grep --color=never --invert-match trash



Às vezes, arquivar ramificações da seguinte forma:

  1. Gere arquivos de correção, por exemplo, format-patch <branchName> <firstHash>^..<lastHash> (obtenha firstHash e lastHash usando git log <branchName> .
  2. Mova os arquivos de patch gerados para o diretório em um servidor de arquivos.
  3. Exclua a ramificação, por exemplo, git branch -D <branchName>

"Aplique" o patch quando precisar usar o branch novamente; entretanto, aplicar os arquivos de correção (consulte git am ) pode ser um desafio, dependendo do estado do desvio de destino. No lado positivo, essa abordagem tem o benefício de permitir que os commits da filial sejam coletados como lixo e economizar espaço em seu repositório.




Related


Tags

git