Quais são as práticas recomendadas para usar o controle de origem Git com o Unity 3D, principalmente ao lidar com a natureza binária dos projetos do Unity 3D? Descreva o fluxo de trabalho, quais caminhos seriam incluídos no .gitignore, quais configurações devem ser definidas no Unity e / ou no projeto e quaisquer outras coisas especiais que devem ser observadas.
Nota: Eu sei que o uso do Asset Server é a maneira recomendada pela Unity, mas eu gostaria de usar o Git por vários motivos. Por favor, não responda esse estado ou defenda que eu deveria apenas usar o Asset Server. O servidor de ativos realmente não é uma opção para mim.
git
unity3d
version-control
PressingOnAlways
fonte
fonte
Respostas:
A seguir, um trecho do meu blog pessoal .
Usando o Git com jogos 3D
Atualização em outubro de 2015: o GitHub lançou um plug-in para o Git chamado Git LFS que lida diretamente com o problema abaixo. Agora você pode versão fácil e eficiente de arquivos binários grandes!
O Git pode funcionar bem com jogos 3D prontos para uso. No entanto, a principal ressalva aqui é que o controle de versão de arquivos de mídia grandes (> 5 MB) pode ser um problema a longo prazo, à medida que o histórico de confirmação aumenta. Resolvemos esse problema em potencial em nossos projetos, apenas com a versão do ativo binário quando ele é considerado final. Nossos artistas 3D usam o Dropbox para trabalhar com ativos WIP, pelo motivo acima e porque é muito mais rápido e mais simples (poucos artistas desejam ativamente usar o Git!).
Fluxo de trabalho Git
Seu fluxo de trabalho do Git é algo que você precisa decidir por si mesmo, considerando suas próprias experiências em equipe e como você trabalha em conjunto. Contudo. Eu recomendaria fortemente a metodologia Git Flow apropriadamente chamada, conforme descrito pelo autor original aqui .
Não vou me aprofundar muito aqui sobre como a metodologia funciona, conforme o autor a descreve perfeitamente e em poucas palavras também, para que seja fácil passar. Estou usando minha equipe há algum tempo e é o melhor fluxo de trabalho que tentamos até agora.
Aplicativo cliente Git GUI
Essa é realmente uma preferência pessoal aqui, pois existem algumas opções em termos de Git GUI ou se é necessário usar uma GUI. Mas eu gostaria de sugerir o aplicativo gratuito do SourceTree, pois ele se conecta perfeitamente à extensão Git Flow. Leia o tutorial SourceTree aqui sobre como implementar a metodologia Git Flow em sua aplicação.
Unity3D Ignore Folders
Para uma verificação de versão atualizada, o Github mantinha o arquivo Unity.gitignore sem detalhes específicos do sistema operacional.
Configurações do Unity3D
Para versões do Unity 3D v4.3 e superior:
External
opção emUnity → Preferences → Packages → Repository
.Edit
menu e escolhaProject Settings → Editor
:Version Control Mode
paraVisible Meta Files
.Asset Serialization Mode
paraForce Text
.File
menu.Deseja migrar seu repo existente para o LFS?
Confira minha postagem no blog para obter etapas sobre como fazê-lo aqui .
Configuração Adicional
Um dos poucos incômodos que se pode ter com o uso de projetos Git com Unity3D é que o Git não se preocupa com diretórios e fica feliz em deixar diretórios vazios depois de remover arquivos deles. O Unity3D criará arquivos * .meta para esses diretórios e poderá causar um pouco de batalha entre os membros da equipe quando o Git confirmar continuar adicionando e removendo esses metarquivos.
Adicione este gancho de pós-mesclagem do Git à
/.git/hooks/
pasta de repositórios com projetos do Unity3D. Após qualquer pull / mesclagem do Git, ele examinará quais arquivos foram removidos, verifique se o diretório em que existia está vazio e, em caso afirmativo, exclua-o.fonte
Hidden Meta Files
?No Unity 4.3, você também tinha que habilitar a opção Externa nas preferências, mas desde o Unity 4.5 eles abandonaram a opção, o processo de instalação é parecido com:
Visible Meta Files
noEditor → Project Settings → Editor → Version Control Mode
Force Text
noEditor → Project Settings → Editor → Asset Serialization Mode
File
menuAlém disso, nossa equipe está usando um
.gitignore
arquivo um pouco mais extenso :Observe que as únicas pastas que você precisa manter sob controle de origem são
Assets
eProjectSettings
.Mais informações sobre como manter o Unity Project sob controle de origem, você pode encontrar neste post .
fonte
Hidden Meta Files
?O que é GIT?
O Git é um sistema de controle de versão distribuído (SCM) gratuito e de código aberto desenvolvido por Linus Torvalds em 2005 (fundador do Linux OS). Ele é criado para controlar tudo de pequenos a grandes projetos com velocidade e eficiência. Empresas líderes como Google, Facebook, Microsoft usam GIT todos os dias.
Se você quiser saber mais sobre o GIT, consulte este tutorial rápido ,
Antes de tudo, verifique se o seu ambiente Git está configurado.Você precisa configurar o ambiente local e um repositório Git (eu prefiro o Github.com).
Aplicativo cliente GIT Mac / Windows
Para o aplicativo cliente GUI do GIT, eu recomendo que você vá com o Github.com,
O GitHub é o lugar para compartilhar código com amigos, colegas de trabalho, colegas de classe e completos estranhos. Mais de cinco milhões de pessoas usam o GitHub para criar coisas incríveis juntos.
Configurações do Unity3d
Você precisa fazer essas configurações
Alterne para Meta arquivos visíveis em Editar → Configurações do projeto → Editor → Modo de controle de versão.
Ative a opção Externa no Unity → Preferências → Pacotes → Repositório
Alterne para Forçar texto em Editar → Configurações do projeto → Editor → Modo de serialização de ativos.
Fonte: Usando Git com controle de fonte de jogos 3D
fonte
Preferences > Packages
no Unity 5.x Normal? tyPara adicionar tudo o que foi dito, também é ideal usar git lfs com o Unity. Eu tenho usado isso desde que saiu e não tive problemas com isso.
Você quer adicionar isso
.gitattributes
ao seu.gitignore
arquivoEssa é a minha lista de arquivos contínuos. Se você usar arquivos binários adicionais não listados, adicione-os.
Eu também tenho arquivos configurados para usar o yamlmerge, você precisaria configurá-lo. Você pode ler sobre isso aqui: http://docs.unity3d.com/Manual/SmartMerge.html
fonte
Agora, temos uma integração perfeita à unidade com a extensão Github to Unity ... https://unity.github.com/
A nova extensão do GitHub for Unity traz o fluxo de trabalho do GitHub e muito mais para o Unity, fornecendo suporte para arquivos grandes com Git LFS e bloqueio de arquivos.
No momento da redação, o projeto está em alfa, mas ainda é utilizável para projetos pessoais.
fonte
Eu pensei que eu poderia postar um mais simples
.gitignore
para quem está interessado:fonte
UnityPackageManager/
ePackages/
).As principais coisas a serem lembradas ao usar o git para o controle de versão do código fonte do unity-3d:
(A) NÃO faça check-in na pasta Biblioteca . Eu cometi esse erro várias vezes no passado e sofri por isso! Exclua OU mova a pasta da biblioteca antes de adicionar seu projeto / arquivos ao git.
(B) Use "Meta arquivos visíveis" - para as versões mais recentes da unidade - 5.3.4 e acima, isso acontece por padrão. Para algumas das versões anteriores, é necessário alterar as configurações em: Editar-> Configurações do projeto-> Controle de versão
(C) Use um arquivo .gitignore para o Unity - para garantir que a sanidade seja mantida e os arquivos não sejam desnecessariamente adicionados - se no android / tizen - adicione regras para impedir que arquivos APK e TPK sejam adicionados ao repositório. Pesquise no Google por um arquivo .gitignore para a unidade OU use este modelo .gitignore for Unity fornecido pelo GitHub: https://github.com/github/gitignore/blob/master/Unity.gitignore
(D) Certifique-se de que o arquivo .gitignore seja adicionado ao repositório como o primeiro arquivo adicionado - porque no passado eu pessoalmente sentia falta de adicionar o arquivo .gitignore. Pense bem sobre o motivo disso acontecer, mas hoje em dia apenas copio e adiciono o arquivo .gitignore como primeira etapa da configuração do repositório.
Então ... para preparar um projeto do Unity para o git, faça o seguinte:
(1) Vá para a pasta do projeto
(2) Digite git init.
(3) Copie o arquivo .gitignore: No MacOS: cp ~ / Downloads / .gitignore No Windows: copie c: \ Users [yourusername] \ Downloads.gitignore.
(4) git add .gitignore
(5) git add *
Espero que isso ajude ... tudo de bom!
fonte
Edit -> Project Settings -> Editor
Defina Controle de versão como metarquivos. Defina serialização de ativos para forçar o texto.
Eu acho que é isso que você quer.
fonte
Prefiro que você use o BitBucket, pois ele não é público e existe um tutorial oficial do Unity no Bitbucket.
https://unity3d.com/learn/tutorials/topics/cloud-build/creating-your-first-source-control-repository
espero que isto ajude.
fonte
Você pode usar o Github for Unity , uma extensão do Unity que traz o fluxo de trabalho do git para a interface do usuário do Unity.
O Github for Unity acaba de lançar a versão 1.0 da extensão.
fonte
Somente as pastas Assets e ProjectSettings precisam estar sob o controle de versão git.
Você pode fazer um gitignore como este.
fonte
O Unity também fornece seu próprio controle de versão de origem. antes do unity5, era o unityAsset Server, mas agora é depreciado. e lance um novo sistema de controle SVN chamado unity Collaborate. mas Non of svn nos permite resolver esse tipo de conflito ou mesclar cena. portanto, dependa de você com qual SVN você está familiarizado. Estou usando a ferramenta SmartSVN no Mac. e tartaruga nas janelas.
fonte
Apenas adicionando o assunto do Gitignore. A maneira recomendada ignora apenas Library e Temp, se estiver na raiz do seu projeto git. se você é como eu e às vezes precisa do projeto de unidade para fazer parte do repositório, não todo o repositório, as strings corretas no gitignore seriam:
fonte
Eu queria adicionar um fluxo de trabalho muito simples de alguém que estava frustrado com o git no passado. Existem várias maneiras de usar o git, provavelmente as mais comuns para a unidade são GitHub Desktop, Git Bash e GitHub Unity
https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069 .
Essencialmente, todos eles fazem a mesma coisa, exceto a escolha do usuário. Você pode ter o git para configuração de arquivos grandes, que permite armazenamento gratuito de arquivos grandes de 1 GB, com armazenamento adicional disponível em pacotes de dados por US $ 4 / mês por 50 GB, e isso permitirá enviar arquivos> 100mb para repositórios remotos (ele armazena os arquivos reais em um servidor e no seu repositório um ponteiro)
https://git-lfs.github.com/
Se você não deseja configurar o lfs por qualquer motivo, pode digitalizar seus projetos em busca de arquivos> 128 mb no windows digitando size: large no diretório em que seu projeto está sendo executado. Isso pode ser útil para procurar arquivos grandes, embora alguns arquivos entre 100mb e 128mb sejam perdidos.
O formato geral do git bash é
git add. (adiciona arquivos a serem confirmados)
git commit -m 'message' (confirma os arquivos com uma mensagem, eles ainda estão no seu PC e não no repositório remoto, basicamente eles foram 'versionados' como um novo commit)
git push (envia arquivos para o repositório)
A desvantagem do git bash para projetos do Unity é que, se houver um arquivo> 100mb, você não receberá um erro até pressionar. Você precisa desfazer seu commit, redefinindo sua cabeça para o commit anterior. Um tipo de aborrecimento, especialmente se você é novo no git bash.
A vantagem do GitHub Desktop é que, antes de você confirmar arquivos com 100mb, será exibida uma mensagem de erro pop-up. Em seguida, você pode reduzir esses arquivos ou adicioná-los a um arquivo .gitignore.
Para usar um arquivo .gitignore, crie um arquivo chamado .gitignore no diretório raiz do repositório local. Basta adicionar os arquivos uma linha de cada vez que você gostaria de omitir. O SharedAssets e outros arquivos de pastas que não são de ativos geralmente podem ser omitidos e serão preenchidos automaticamente novamente no editor (pacotes podem ser reimportados, etc.). Você também pode usar curingas para excluir tipos de arquivos.
Se outras pessoas estiverem usando seu repositório do GitHub e você quiser clonar ou extrair, você também terá essas opções disponíveis na área de trabalho ou no Git bash do GitHub.
Eu não mencionei muito sobre o pacote Unity GitHub, onde você pode usar o GitHub no editor porque, pessoalmente, não achei a interface muito útil, e não acho que em geral isso ajude alguém a se familiarizar com o git, mas esse é apenas o meu preferência.
fonte