Pular para o conteúdo principal

Visão geral do armazenamento de arquivos grandes (LFS) do Git

Comece a usar o Git Large File Storage (LFS) em seus próprios repositórios para ajudar a gerenciar arquivos binários de tamanho considerável.
Atualizado 25 de mar. de 2025  · 9 min lido

O Git é uma ferramenta amplamente utilizada para o controle de versões que ajuda a gerenciar projetos de desenvolvimento de software, fluxos de trabalho de ciência de dados e até mesmo repositórios de documentação. No entanto, o Git tradicional tem limitações quando se trata de lidar com arquivos grandes. Os arquivos grandes serão duplicados a cada commit, o que leva ao inchaço do repositório e a fluxos de trabalho mais lentos devido à necessidade de copiar várias cópias de arquivos grandes ao fazer alterações. Por esse motivo, o gerenciamento de arquivos grandes com o Git pode se tornar ineficiente pelos seguintes motivos:

  • Tamanho grande do repositório: O armazenamento de arquivos grandes diretamente em um repositório Git aumenta seu tamanho geral, tornando as operações de clonagem e busca lentas, especialmente quando você trabalha em um repositório remoto que pode exigir o upload/download de arquivos.
  • Armazenamento e controle de versão ineficientes: Toda vez que um arquivo grande é modificado, o Git armazena uma nova versão em seu histórico, levando a um rápido inchaço do repositório.
  • Problemas de desempenho: Com um repositório grande, as operações do Git (por exemplo, clonagem, puxar, empurrar) tornam-se significativamente mais lentas e exigem mais armazenamento.

Neste guia, daremos uma olhada detalhada no Git Large File Storage (Git LFS), que é uma extensão do Git que ajuda com arquivos grandes em seu repositório. Ele nos permite armazenar com mais eficiência as alterações em arquivos grandes sem duplicação extra ou armazenamento de arquivos. Você deve usá-lo sempre que esperar ter arquivos binários grandes em seu repositório. Começarei explicando com mais detalhes o que é, como funciona, quando usá-lo e como configurá-lo de forma eficaz.

Se você é novo no Git, confira nosso guia sobre Como aprender Git e Curso de introdução ao Git.

O que é o Git LFS?

O Git Large File Storage (Git LFS) é uma extensão do Git que melhora o manuseio de arquivos grandes.  

Ele muda a forma como o Git lida com a busca e a clonagem, adicionando funcionalidade ao Git para buscar dados de um repositório remoto e adicionando uma funcionalidade inteligente de gerenciamento de arquivos ao Git. 

Em todos os outros aspectos, a experiência do usuário é perfeita e igual à do Git normal.

Como o Git LFS difere do programa padrão do Git

No Git tradicional, armazenamos todo o histórico do repositório no diretório .git. Isso inclui os arquivos de texto reais que foram alterados ao longo do tempo. Além disso, o download de repositórios inteiros é feito quando chamamos git fetch ou git clone para que todos os arquivos estejam prontamente disponíveis. Quando usamos o Git LFS, isso muda algumas coisas. 

Primeiro, o Git LFS substitui arquivos grandes por ponteiros leves para o armazenamento remoto, reduzindo a necessidade de armazenar cada arquivo. Em segundo lugar, os arquivos grandes são baixados somente quando você faz o checkout na ramificação, o que significa que só baixamos arquivos grandes quando estamos prontos para trabalhar neles. 

Por fim, ele gerencia o armazenamento do repositório local para limpar versões antigas de arquivos e manter um ambiente de trabalho limpo.

Como o Git LFS funciona?

O Git LFS segue um mecanismo de armazenamento baseado em ponteiros. Como mencionado anteriormente, quando você especifica um arquivo para rastreamento do LFS, o Git LFS o substitui por um arquivo de ponteiro no repositório e também coloca uma cópia local no cache. 

Quando você faz push de commits, o cache local é atualizado para um armazenamento remoto (por exemplo, servidores GitHub, GitLab, Bitbucket LFS). Se houver alterações e você fizer o checkout, essas alterações atualizarão o cache local para fornecer a você a cópia de trabalho mais recente. 

Se você quiser saber mais sobre um dos repositórios remotos mais populares, o GitHub, confira este curso de Introdução ao GitHub.

Há muitas vantagens em usar o Git LFS. Isso mantém os tamanhos dos repositórios pequenos e gerenciáveis. Ele também melhora o desempenho das equipes que trabalham com arquivos grandes. Além disso, ao evitar a duplicação desnecessária de arquivos grandes, ele mantém o tamanho do repositório local gerenciável.

Configuração do Git LFS

Antes de usar o Git LFS, você deve seguir algumas etapas de configuração. É um processo relativamente simples que envolve a instalação da extensão. Se você tiver repositórios existentes, precisará migrá-los. Se estiver criando um novo repositório, você pode simplesmente iniciar o Git LFS.

Instalação do Git LFS

Para usar o Git LFS, você deve instalá-lo em seu sistema. A maneira mais simples é acessar o site do git-lfs e instalar os arquivos. Depois de fazer isso, você executará git lfs install uma vez no console de comando para inicializar e instalar totalmente o Git LFS.

Utilização do Git LFS

Depois de instalado, você precisará garantir que o Git LFS esteja configurado para cada repositório.  Diferentes rastreadores remotos do Git (por exemplo, GitHub vs. Bitbucket) terão etapas ligeiramente diferentes. É melhor você seguir as etapas recomendadas para seu rastreador remoto Git específico. Em um alto nível, se você inicializar um novo repositório, poderá executar o git lfs install nesse repositório para inicializar os ganchos e adicionar arquivos ao programa. Se você tiver um repositório existente, poderá usar git lfs migrate e seguir os procedimentos de limpeza do diretório .git:

git reflog expire --expire-unreachable=now --all
git gc --prune=now

Usando o Git LFS em um projeto

Vamos examinar alguns dos usos do Git LFS em um projeto. Abordaremos as etapas de rastreamento, confirmação, clonagem e extração de arquivos grandes de um repositório Git LFS.

Programando arquivos grandes (git lfs track)

Para começar a rastrear tipos de arquivos específicos, você pode usar o comando git lfs track . Por exemplo, se eu quisesse rastrear arquivos CSV, eu escreveria o comando como: git lfs track "*.csv". Isso também adiciona informações ao nosso arquivo .gitattributes para garantir que estamos usando o Git LFS para esse arquivo específico. Agora, devemos enviar nosso arquivo .gitattributes primeiro para garantir que estamos rastreando os arquivos LFS corretamente.

git add .gitattributes
git commit -m "Adding LFS .gitattributes"
git push origin main

Adição e envio de arquivos grandes

Depois de adicionar o programa, você pode adicioná-lo e confirmá-lo como de costume:

git add largefile.csv
git commit -m "Adding large file with Git LFS"
git push origin main

Nos bastidores, o Git LFS armazena o arquivo separadamente e o substitui por um ponteiro no repositório. Deve ser uma experiência relativamente perfeita.

Clonagem de repositórios com o Git LFS (git lfs clone)

Se você tiver uma versão mais recente do Git (>= 2.3.0), o comando git clone deverá funcionar automaticamente para os arquivos LFS e não LFS. Se você estiver usando uma versão mais antiga do Git, precisará usar o comando específico git lfs clone. Isso funciona de forma diferente do clone normal, pois ele se refere às informações do ponteiro para arquivos grandes e clona apenas a cópia de trabalho de cada arquivo grande. Para obter mais informações sobre clonagem no Git, consulte o seguinte tutorial sobre Git Clone Branch.

Extração de arquivos grandes (git lfs pull)

Se quiser buscar e fazer checkout dos arquivos LFS grandes do seu repositório, você poderá usar a função git lfs pull. Isso é diferente de um simples git pull que extrairá apenas os arquivos git. 

Aqui está um exemplo de fluxo de trabalho:

git checkout main # check out your main branch 
git pull # pull latest git files from the remote, for this branch 
git lfs pull # pull latest git lfs files from the remote, for this branch

Práticas recomendadas para usar o Git LFS

Embora o Git LFS seja uma ótima solução, ele ainda pode ter sua própria série de problemas e não foi projetado para ser uma solução universal. Certifique-se de que você tenha as seguintes práticas recomendadas ao usar o Git LFS para aproveitá-lo ao máximo:

  • Use o Git LFS somente para arquivos binários grandes, não para código ou arquivos de texto pequenos.
  • Elimine regularmente os arquivos desnecessários usando: git lfs prune
  • Evite programar diretórios inteirosque pode levar a problemas de desempenho e inchaço
  • Certifique-se de que todos os colaboradores tenham o Git LFS instalado para evitar que você perca arquivos.

Se você seguir essas diretrizes gerais, o Git LFS será uma ótima ferramenta para você!

Problemas comuns e como corrigi-los

Como o Git LFS é uma extensão do Git, ele vem com sua própria série de problemas. Isso é especialmente verdadeiro porque ele depende de repositórios remotos que têm seus próprios problemas. Aqui estão alguns problemas comuns que você pode encontrar ao usar o Git LFS e suas soluções.

Problemas de autenticação do Git LFS

Há várias maneiras pelas quais você pode ter problemas de autenticação com o Git LFS. Para garantir que você tenha as credenciais corretas, verifique o seguinte:

  • Use a configuração SSH correta com git config lfs.url ssh://
  • Verifique se você tem acesso de leitura/gravação ao ramo principal, pois o Git LFS geralmente programa para o principal
  • Tente fazer uma busca/clonagem limpa do repositório remoto inteiramente

Se você continuar a ter problemas e não for o administrador, consulte o proprietário do projeto para ver se ele pode ajudá-lo com as permissões.

Limites e cotas de armazenamento de arquivos grandes

Os serviços podem ter cotações no armazenamento do Git LFS. Por exemplo, o GitHub tem um limite de 2 GB para usuários Free e Pro, com um limite de 5 GB por arquivo para usuários da nuvem Enterprise. Certifique-se de que você não está carregando arquivos maiores do que o limite do seu serviço para evitar erros.

Migração de repositórios existentes para usar o Git LFS

Se um repositório já contiver arquivos grandes, migre-os usando:

git lfs migrate import --include="*.filetype"

Isso substitui retroativamente arquivos grandes por ponteiros LFS. 

Conclusão

O Git LFS é uma ferramenta essencial para gerenciar arquivos grandes de forma eficiente, mantendo o desempenho e a leveza dos repositórios. Ao aproveitar o Git LFS, os desenvolvedores podem gerenciar adequadamente seus arquivos de repositório maiores. Desde que você esteja seguindo as práticas recomendadas para minimizar o inchaço, o LFS será uma grande ajuda para o rastreamento de arquivos. Se você tiver mais interesse em aprender sobre o Git, experimente os seguintes recursos:

Perguntas frequentes sobre o Git LFS

O que acontece se eu clonar um repositório com arquivos LFS do Git?

A execução do git clone em versões mais recentes do Git buscará automaticamente os ponteiros do repositório e do LFS. Se você estiver em uma versão mais antiga do Git, será necessário executar git lfs pull para fazer o download dos arquivos grandes. Como alternativa, você pode usar o site git lfs clone para fazer isso automaticamente.

Como posso verificar quais arquivos são programados pelo Git LFS?

Execute git lfs track para ver os padrões de arquivos rastreados e git lfs ls-files para listar os arquivos reais armazenados usando o LFS.

E se eu ficar sem armazenamento do Git LFS no GitHub ou em outro serviço de hospedagem?

Serviços como o GitHub impõem limites de armazenamento. Você pode gerenciar o armazenamento com git lfs prune, comprar mais espaço ou usar uma solução alternativa de armazenamento externo.

Posso parar de usar o Git LFS depois de ativá-lo?

Sim, mas você precisa migrar seus arquivos de volta para o Git padrão usando git lfs migrate export --include="*.filetype" para remover o rastreamento do LFS.

Tópicos

Principais cursos da DataCamp

Curso

Introduction to GitHub Concepts

2 h
25.6K
Learn how to use GitHub's various features, navigate the interface and perform everyday collaborative tasks.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado
Git

blog

O que é Git? Manual completo do Git

Saiba mais sobre o sistema de controle de versão mais conhecido e por que é uma ferramenta de colaboração indispensável para cientistas de dados e programadores.
Summer Worsley's photo

Summer Worsley

14 min

Tutorial

Tutorial de armazenamento do AWS: Uma introdução prática ao S3 e ao EFS

O guia completo para armazenamento de arquivos no AWS com S3 e EFS.
Zoumana Keita 's photo

Zoumana Keita

14 min

Tutorial

Tutorial do GitHub e do Git para iniciantes

Um tutorial para iniciantes que demonstra como funciona o controle de versão do Git e por que ele é crucial para projetos de ciência de dados.
Abid Ali Awan's photo

Abid Ali Awan

9 min

Tutorial

Git Prune: O que é o Git Pruning e como usar o Git Prune

O Git prune é um comando do Git que remove objetos do repositório que não são mais acessíveis a partir de qualquer commit ou branch, ajudando a liberar espaço em disco.

Tutorial

Git Rename Branch: Como renomear uma filial local ou remota

Saiba como renomear ramificações locais e remotas do Git usando o terminal ou a interface gráfica do usuário (GUI) de clientes populares como o GitHub.

Tutorial

Tutorial de push e pull do GIT

Saiba como realizar solicitações Git PUSH e PULL por meio do GitHub Desktop e da linha de comando.

Olivia Smith

13 min

Ver maisVer mais