Atualizar uma equipe de desenvolvimento com o histórico reescrito de repositórios Git, removendo arquivos grandes

Eu tenho um repositório Git com alguns binários muito grandes nele. Não preciso mais deles e não ligo para poder fazer o check-out dos arquivos de confirmações anteriores. Portanto, para reduzir o tamanho do repositório, desejo excluir os binários do histórico completamente.

Após uma pesquisa na web, concluí que minha melhor opção (somente?) É usargit-filter-branch:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch big_1.zip big_2.zip etc.zip' HEAD

Parece uma boa abordagem até agora?

Supondo que a resposta seja sim, tenho outro problema para enfrentar. omanual git tem esse aviso:

AVISO! O histórico reescrito terá nomes de objetos diferentes para todos os objetos e não convergirá com a ramificação original. Você não poderá enviar e distribuir facilmente a ramificação reescrita na parte superior da ramificação original. Por favor, não use este comando se você não souber todas as implicações e evite usá-lo de qualquer maneira, se um simples commit simples for suficiente para corrigir seu problema. (Consulte a seção "RECUPERANDO DO UPSTREAM REBASE" no git-rebase (1) para obter mais informações sobre como reescrever o histórico publicado.)

Temos um repositório remoto em nosso servidor. Cada desenvolvedor pressiona e puxa a partir dele. Com base no aviso acima (e minha compreensão de comogit-filter-branch funciona), acho que não vou conseguirgit-filter-branch na minha cópia local e pressione as alterações.

Então, eu estou tentando planejar as seguintes etapas:

Diga a todos os meus desenvolvedores para confirmar, enviar por push e parar de trabalhar um pouco.Faça login no servidor e execute o filtro no repositório central.Todos devem excluir suas cópias antigas e clonar novamente no servidor.

Isso soa certo? Essa é a melhor solução?

questionAnswers(4)

yourAnswerToTheQuestion