O documento fornece uma introdução sobre como usar o Git na Unity, incluindo: 1) Uma explicação do que é o Git e como ele pode ser usado; 2) Demonstração dos principais comandos do Git como commit, push, pull e merge; 3) Uma discussão sobre branches e como eles podem ser usados para isolar mudanças.
2. Quem eu sou: Erik Cruz
● Programador na Rogue Snail.
● Fundador e Programador na Utopia Game
Studio.
● Estudante de Jogos Digitais na Unisinos.
● Técnico em informática e em Programação
de Jogos Digitais.
Contato: erikcruzdev@gmail.com
Erik Cruz - Usando Git na Game Jam - Agosto 2020
3. Um pouco sobre a Rogue Snail
Trailer Relic Hunter Legends | Site Rogue Snail
A Rogue Snail é uma empresa
totalmente remota com integrantes
trabalhando de todo o Brasil e
também de outros países.
Estamos desenvolvendo os jogos
da franquia Relic Hunters com a
nossa própria propriedade
intelectual.
4. O que é o GIT e para que serve
Git é uma ferramenta de versionamento onde você consegue salvar o
estado atual do seu projeto. Praticamente é uma máquina do tempo!
Usando Git, uma equipe
grande consegue
trabalhar no mesmo
projeto e mantendo
versões diferentes
estáveis.
Erik Cruz - Usando Git na Game Jam - Agosto 2020
5. O que é o GIT e para que serve
Viagem no tempo: Consegue ir para um estado estável antes das
coisas pegarem fogo.
Versionamento: Chega de cópias de zip no drive de
versao_final_finalizada_aleluia.zip!
6. “No que vou usar isso na minha vida?”
● Salva o seu projeto de cachorros que
comem pen drive.
● Evita perda de trabalho feito caso
ocorra um problema.
● Ferramenta feita para integrar trabalho
feito por uma equipe.
7. ● Evita perda de projeto caso ele
for corrompido ou algo
semelhante.
● Backup do projeto na nuvem.
● Empresas grandes, não
necessariamente remotas,
utilizam GIT profissionalmente.
“No que vou usar isso na minha vida?”
8. “E precisa em Game Jam ou projeto da
faculdade?”
Sim, além de ter um backup e poder voltar
para uma versão mais estável caso algum
imprevisto aconteça. Utilizar repositório
minimiza o tempo levado para fazer o
famoso “depois a gente junta tudo”.
9. Como posso usá-lo?
Há vários clientes de GIT para várias plataformas
Fork Source Tree Github
Desktop
Tortoise Git GitKraken
10. Terminal
Git for Windows
● Com o terminal você tem ciência de todas as operações sendo feitas
com mais controle.
● Leve e muitas vezes mais rápido.
● Te ajuda a imaginar que está acessando a Matrix.
12. Colocando seu versionamento na nuvem
● Salva seu repositório na nuvem.
● Backups.
● Colaborar com membros de um time em um mesmo projeto
simultaneamente.
https://bitbucket.org/product/ https://github.com/
Os mais usados
Erik Cruz - Usando Git na Game Jam - Agosto 2020
13. Características
Bitbucket:
Free para até cinco integrantes de uma equipe; 1GB de LFS.
1GB de LFS Free; colaboradores ilimitados.
Ambos serviços tem projetos privados ilimitados e pode fazer upgrades
para aumentar o storage e outros benefício.
P.S: Vamos falar sobre o LFS e sua importância depois.
14. Vamos por a mão na massa!
Vamos utilizar o Fork e o Github nessa workshop!
Download do Fork em: https://git-fork.com/
Cadastro no Github em: https://github.com/
Erik Cruz - Usando Git na Game Jam - Agosto 2020
15. Passos iniciais
● Criar uma conta no Bitbucket ou no Github.
● Depois do login, vamos criar um novo repositório.
Erik Cruz - Usando Git na Game Jam - Agosto 2020
20. Commit
Um commit é um conjunto de mudanças feitas no projeto que o usuário
queira salvar naquele estado. Um checkpoint, um save.
É ideal fazer commits frequentes para caso você queira voltar para um
estado anterior e salvá-lo.
21. Commitando uma mudança
Changes - Contém as mudanças feitas que não foram
commitadas.
Stage - Adiciona arquivos que tiveram mudanças relevantes
para irem possivelmente irem para o commit.
Unstage - Remove mudança que foi dado Stage.
24. Push - Empurrar/Upload
Depois que o commit é feito, a mudança fica salvo no repositória
apenas de forma local. As mudanças se encontram apenas na sua
máquina. Você precisa “Empurrar/Enviar” essas mudanças para a
nuvem (Github, Bitbucket ou outro serviço).
Origin/Master - É o seu branch/ramo principal na nuvem.
Master - É o seu ramo principal local em sua máquina.
P.S: Vamos falar sobre
Branch/Ramo em breve, segura aí.
27. Pull - Puxar/Baixar
Ok, e se meu colega alterou algum arquivo e eu quero atualizar o
projeto? Você precisa baixar as mudanças dos seus colegas usando o
comando Pull.
É recomendável quando você estiver trabalhando no mesmo branch
que um colega você dar Pull antes de fazer suas alterações para o Git
atualizar o projeto.
P.S: Vamos falar sobre
Branch/Ramo em breve, eu
juro!
28. Outras operações
Fetch - Baixa todas as mudanças e commits feitos no repositório remoto sem
afetar o seu estado local.
Stash - É uma “lixeira” para guardar mudanças temporárias caso você queira
sair de um branch e ir para outra sem perder suas mudanças atuais.
Erik Cruz - Usando Git na Game Jam - Agosto 2020
29. Branches
E se eu estou mexendo em uma feature que ainda está em
desenvolvimento e ainda não está estável? Como posso mandar para o
servidor sem quebrar o projeto? A resposta é criando Branches!
Branches são ramificações que apontam para estados de commits.
Usando branches você consegue
divergir do estado atual do
repositório e voltar para esse estado
anterior facilmente.
30. Branches são úteis para fazer uma feature mais isolada sem mudar
drasticamente o estado do projeto para que outras pessoas consigam ter
uma versão estável com segurança.
Branches
É como se você fosse um viajante
no tempo criando uma realidade
alternativa e quisesse voltar para
estabilidade caso algo desse
errado.
31. Criando uma Branch
Sua branch precisa sair de outra
branch/commit para ser criada.
Por padrão, a branch master já é iniciada
com o repositório.
32. Trocando de branch
Caso você quiser voltar para outra timeline do seu projeto onde alguma
coisa específica estava diferente, você pode mudar a vontade! Só não
esqueça de commitar suas mudanças atuais para não perdê-las caso
forem relevantes!
Antes de trocar de branch é importante dar um
Fetch para atualizar todas as branches remotas
para você não perder uma atualização.
33. Boas Práticas com Branches
Há boas práticas para criação de branches.
Uma delas é você fazer uma branch nova
quando trabalhar em uma Feature nova. Isso
pode te ajudar caso alguma mudança destrutiva
ocorra no seu repositório.
Trabalhar em uma branch separada da Master faz com que as mudanças da
master fiquem protegidas de mudanças instáveis. Mas também é exagero criar
um branch para cada mudança pequena.
34. Merge - Mesclar
E depois que você quer unir suas mudanças
estáveis com o resto do projeto?
Para isso você precisa fazer o Merge.
Merge é a união de commits mesclados em um
novo commit que guarda esse novo estado.
Erik Cruz - Usando Git na Game Jam - Agosto 2020
35. Merge - Mesclar
Merge é um processo que pode ser complexo em projetos grandes
com equipes grandes onde tem pessoas mexendo em coisas
simultaneamente.
37. Resolvendo conflitos em Merge
Às vezes os Merges podem ter conflitos quando as branches mescladas tiveram
mudança nos mesmos lugares:
38. Resolvendo conflitos em Merge
Dependendo do conflito, você pode marcar apenas as mudanças de uma das
branches. Mas quando o commit tem trechos requisitados nos dois branches,
você precisa dar Merge para mesclá-os. Ative as duas checkboxes e dê um
Merge.
40. Resolvendo conflitos em Merge
Conflitos podem ser resolvidos com trechos de cada branch, para isso basta
passar o mouse no conflito sublinhado e dar select Left ou Right.
41. Resolvendo conflitos em Merge
Um trecho pode ser dado Select Left ou Select Right mas você pode editar
o texto, copiar e colar partes do outro trecho ou mudá-lo para incluir
ambos.
42. Resolvendo conflitos em Merge
Depois de resolvido, faça o commit normalmente e verá a mágica acontecer.
Inclusive no Fork fica visível o resultado do Merge antes de commitar.
43. Git Ignore
Há arquivos que você quer ignorar e não quer
commitar mudanças, principalmente quando
você trabalha com uma Engine como a Unity e
a Unreal.
Há arquivos gerados pela própria engine que
não devem entrar no commit.
Um formato de arquivo específico, um arquivo
ou um diretório inteiro pode ser ignorado.
44. Git Ignore
Não esqueça de fazer um commit
com o arquivo .gitignore depois de
adicionar alguma coisa no Ignore!
45. Git Ignore na Unity
Pastas geradas pela Unity que devem ser ignoradas:
NomeDoProjeto/Library
NomeDoProjeto/Temp
NomeDoProjeto/Logs
Também há extensões que devem ser ignoradas como: *.suo, *.tmp etc.
Veja mais em: https://github.com/github/gitignore/blob/master/Unity.gitignore
46. LFS significa Large File Storage e é utilizado para seu repositório lidar melhor
com formatos binários que não lidam bem com mudanças em texto como .jpg,
.psd, .mp3 etc.
Código e arquivos de texto não entram para o LFS.
Veja quais são os arquivos que precisam estar no LFS:
https://gist.github.com/nemotoo/b8a1c3a0f1225bb9231979f389fd4f3f
O que é o tal LFS que estava nos planos
do Github e Bitbucket mesmo?
47. O LFS precisa ser inicializado no
projeto para ser usado.
Para isso vá em:
Repository > Git LFS> Initialize Git LFS
49. Inicializando o LFS
Adicione no formato como o formato
de exemplo:
*.bla
Depois de adicionar extensões de
arquivos que você usa no projeto
aperte em Track.
50. Outras configurações para a Unity
Para utilizar Unity com Git, além de configurar o Ignore, há configurações
que precisam ser feitas dentro da Engine, elas se encontram em:
Edit> Project Settings>Version Control
Edit> Project Settings>Editor
51.
52. Mas o que são esses Meta Files?
Arquivo que a Unity cria para cada asset. Ele guarda um identificador (id)
único para reconhecer o asset que também é gerado durante sua criação.
Ele fica oculto se a opção Visible Meta Files não é marcada, portanto, não
conseguiria ir para o versionamento.
53. Outras configurações para a Unity
NÃO SE FAZ MERGE DE SCENE UTILIZANDO AS
MUDANÇAS DE DUAS BRANCHES.
Utilize prefabs, cenas separadas, Scriptable Objects
o máximo possível! Quando não puder, comunique
o time!
Arquivos binários como *.jpg, *.png também não
devem ser mesclados, use o LFS.
54. Saiba mais!
Tutorial de Unity com Github Desktop: https://www.youtube.com/watch?v=qpXxcvS-g3g
Documentação do Git para Terminal: https://git-scm.com/doc
Workshop de Git com Terminal:
https://drive.google.com/file/d/1LrjCba0tRgLeD0dT7LWMLe7F2SVrqKXW/view?usp=sharing
The complete guide to Unity & Git:
https://www.gamasutra.com/blogs/TimPettersen/20161206/286981/The_complete_guide_to_Unity__Git.php
Meta Files na Unity:
https://docs.unity3d.com/560/Documentation/Manual/BehindtheScenes.html
Erik Cruz - Usando Git na Game Jam - Agosto 2020
55. Links da palestra
Site da Rogue Snail: https://www.roguesnail.com/
Trailer do Relic Hunters Legend:https://www.youtube.com/watch?v=GW7B4zIciTI
Git Fork: https://git-fork.com/
Github: https://github.com/
Bitbucket: https://bitbucket.org/product/
Erik Cruz - Usando Git na Game Jam - Agosto 2020
56. Obrigado :)
Erik Cruz
Contato: erikcruzdev@gmail.com
Rogue Snail: www.roguesnail.com
Erik Cruz - Usando Git na Game Jam - Agosto 2020