Version control systems
Introdução
O Godot tem como objetivo ser compatível com sistemas de controle de versão (VCS) e gerar principalmente arquivos legíveis e mescláveis.
Version control plugins
Godot also supports the use of version control systems in the editor itself. However, version control in the editor requires a plugin for the specific VCS you're using.
Em julho de 2023, há apenas um plugin de Git disponível, mas a comunidade pode criar plugins de VCS adicionais.
Plugin oficial do Git
Using Git from inside the editor is supported with an official plugin. You can find the latest releases on GitHub.
Documentação em como usar o plugin do Git podem ser encontrados na wiki.
Arquivos para excluir do SCV
Nota
Isso lista os arquivos e pastas que devem ser ignorados no controle de versão no Godot 4.1 e versões posteriores.
A lista de arquivos e pastas que devem ser ignorados no controle de versão no Godot 3.x e Godot 4.0 é completamente diferente. Isso é importante, pois o Godot 3.x e 4.0 podem armazenar credenciais sensíveis no arquivo export_presets.cfg (diferente do Godot 4.1 e versões posteriores).
Se você estiver usando o Godot 3, consulte a versão 3.5 desta página de documentação.
Existem alguns arquivos e pastas que o Godot cria automaticamente ao abrir um projeto no editor pela primeira vez. Para evitar que seu repositório de controle de versão fique sobrecarregado com dados gerados, você deve adicioná-los à lista de exclusão do seu VCS:
.godot/: Esta pasta armazena vários dados de cache do projeto.*.translation: These files are binary imported translations generated from CSV files.
Você pode fazer com que o gerenciador de projetos do Godot gere automaticamente os metadados de controle de versão para você ao criar um projeto. Ao escolher a opção Git, isso cria os arquivos .gitignore e .gitattributes na raiz do projeto:
Criando metadados de controle de versão na caixa de diálogo Novo Projeto do gerenciador de projetos
Em projetos existentes, selecione o menu Projeto na parte superior do editor e, em seguida, escolha Controle de Versão > Gerar Metadados de Controle de Versão. Isso cria os mesmos arquivos como se a operação tivesse sido realizada no gerenciador de projetos.
Trabalhando com Git no Windows
A maioria dos clientes Git para Windows são configurados com o core.autocrlf definido como true. Isso pode fazer com que os arquivos sejam marcados desnecessariamente como modificados pelo Git devido aos seus finais de linha serem convertidos de LF para CRLF automaticamente.
É melhor definir esta opção como:
git config --global core.autocrlf input
Criar metadados de controle de versão usando o gerenciador de projetos ou o editor aplicará automaticamente a terminação de linha LF usando o arquivo .gitattributes. Nesse caso, você não precisa alterar sua configuração do Git.
Git LFS
O Git LFS (Large File Storage) é uma extensão do Git que permite gerenciar arquivos grandes em seu repositório. Ele substitui os arquivos grandes por ponteiros de texto dentro do Git, enquanto armazena o conteúdo dos arquivos em um servidor remoto. Isso é útil para gerenciar grandes recursos, como texturas, arquivos de áudio e modelos 3D, sem inflar o tamanho do seu repositório Git.
Nota
Ao usar o Git LFS, é importante garantir que ele esteja configurado antes de você realizar qualquer commit de arquivos no repositório. Se você já tiver feito commit de arquivos no repositório, será necessário removê-los do repositório e adicioná-los novamente após configurar o Git LFS.
É possível usar o comando git lfs migrate para converter arquivos existentes em seu repositório, mas isso é mais avançado e requer um bom entendimento do Git.
Uma abordagem comum é configurar um novo repositório com Git LFS (e um .gitattributes apropriado), e então copiar os arquivos do repositório antigo para o novo. Dessa forma, você garante que todos os arquivos sejam rastreados pelo LFS desde o início.
Para usar o Git LFS com o Godot, você precisa instalar a extensão Git LFS e configurá-la para rastrear os tipos de arquivo que deseja gerenciar. Você pode fazer isso executando o seguinte comando no seu terminal:
git lfs install
Isso criará um arquivo .gitattributes no seu repositório que informa ao Git para usar o LFS com os tipos de arquivo especificados. Você pode adicionar mais tipos de arquivos modificando o arquivo .gitattributes. Por exemplo, para rastrear todos os arquivos GLB, você pode fazer isso executando o seguinte comando no seu terminal:
git lfs track "*.glb"
Quando você adiciona ou modifica arquivos rastreados pelo LFS, o Git irá armazená-los automaticamente no LFS em vez do histórico regular do Git. Você pode enviar (push) e baixar (pull) arquivos LFS da mesma forma que arquivos normais do Git, mas lembre-se de que os arquivos LFS são armazenados separadamente do restante do histórico do Git. Isso significa que pode ser necessário instalar o Git LFS em qualquer máquina para a qual você clone o repositório, a fim de acessar os arquivos LFS.
Abaixo está um exemplo de arquivo .gitattributes que você pode usar como ponto de partida para o Git LFS. Esses tipos de arquivo foram escolhidos por serem comumente utilizados, mas você pode modificar a lista para incluir quaisquer tipos binários que seu projeto utilize.
# Normalize EOL for all files that Git considers text files.
* text=auto eol=lf
# Git LFS Tracking (Assets)
# 3D Models
*.fbx filter=lfs diff=lfs merge=lfs -text
*.gltf filter=lfs diff=lfs merge=lfs -text
*.glb filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text
# Images
*.png filter=lfs diff=lfs merge=lfs -text
*.svg filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.webp filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.hdr filter=lfs diff=lfs merge=lfs -text
*.dds filter=lfs diff=lfs merge=lfs -text
# Audio
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
# Font & Icon
*.ttf filter=lfs diff=lfs merge=lfs -text
*.otf filter=lfs diff=lfs merge=lfs -text
*.ico filter=lfs diff=lfs merge=lfs -text
# Godot LFS Specific
*.scn filter=lfs diff=lfs merge=lfs -text
*.res filter=lfs diff=lfs merge=lfs -text
*.material filter=lfs diff=lfs merge=lfs -text
*.anim filter=lfs diff=lfs merge=lfs -text
*.mesh filter=lfs diff=lfs merge=lfs -text
*.lmbake filter=lfs diff=lfs merge=lfs -text
Para mais informações sobre o Git LFS, consulte a documentação oficial: https://git-lfs.github.com/ e https://docs.github.com/en/repositories/working-with-files/managing-large-files.