Lidando com arquivos grandes no Git com Git LFS

Git Lfs  (Git Large File Storage) é uma extensão para o Git que permite ao famoso sistema de controle de versão a lidar com arquivos grandes. Em regras gerais um sistema como Git não é adequado a gerenciar arquivos binários principalmente se forem da ordem dos Megabytes, daí a necessidade do Git Lfs.

Adicionando um arquivo grande (da forma errada)

Se você adicionar o seu arquivo binário no Git, simplesmente vai funcionar.

git add meuarquivogrande.iso
git commit -am 'Adicionando indevidamente um arquivo gigante'

O problema é que se você alterar este arquivo e adicioná-lo novamente e novamente e depois outra vez, em pouco tempo você precisar um disco imenso para guardar todas as versões deste arquivo.

Ignorando arquivos

Uma alternativa (para alguns casos) seria adicionar uma regra no seu .gitignore para que o Git faça vista grossa a estes arquivos.

echo '*.iso' >>.gitignore

O problema disso é que se você realmente precisar do arquivo em outras máquinas onde trabalhar com este repositório, pode haver necessidade do arquivo estar presente. É ai que entra o “Git lfs”.

Instalando o Git lfs

O Git Lfs é um “plugin” para o Git que trabalh com o gancho “pre-commit” monitorando tudo o que é submetido e se o arquivo enviado estiver dentro de suas regras ele intercepta o arquivo e dá uma melhor tratativa.

Para instá-lo o processo é bem simples e rápido. Primeiro instale o pacote do Git Lfs com os comandos abaixo:

sudo apt install curl
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs

Veja que o primeiro comando é apenas para instalar o “curl”, quem fará o download do pacote do Git Lfs de fato, portanto se você já tiver o curl instalado ou optar por fazer o download manualmente esta linha é opcional.

Da mesma forma a segunda linha. Que baixa um script “.sh” e o submete ao bash para executá-lo. Este script configura o seu sources.list para realizar o donwload e instalação do gitlfs via apt, mas você pode opcionalmente baixar apenas o arquivo .deb no site do projeto git-lfs

A terceira linha finalmente instala o git lfs no seu sistema, mas observe que isso não habilita o seu repositório a usá-lo ainda, o que requer mais alguns passos.

Habilitando o Git lfs

Com o git lfs instalado vamos habilitá-lo globalmente com o comando abaixo:

git lfs install

Agora dentro o seu repositório você só precisa adicionar as regras de filtragem do LFS.

git lfs track '*.iso'
git lfs track '*.zip'

A partir daí todos os seu arquivos iso e zip serão gerenciados pelo git lfs e não ocuparão espaço exagerado indevidamente. Caso você já tenha versionado arquivos grandes no seu repositório infelizmente não há um jeito fácil de se desfazer isso. Há inúmeros tutoriais por ai explicando maneiras de se fazê-lo mas nenhuma que seja muito fácil.

Para ver os arquivos gerenciados pelo Git lfs você pode usar o comando “ls-files”.

git lfs ls-files

Consulte a documentação para maiores detalhes, mas basicamente é isso.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *