SlideShare uma empresa Scribd logo
1 de 56
Baixar para ler offline
Usando Git na Unity
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
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.
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
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!
“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.
● 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?”
“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”.
Como posso usá-lo?
Há vários clientes de GIT para várias plataformas
Fork Source Tree Github
Desktop
Tortoise Git GitKraken
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.
Clientes de GIT - Fork
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
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.
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
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
Criando um repositório
Repositório: Pasta com
controle de versão do Git.
Clonando um repositório
Copie o link do repositório:
Clonando um repositório - Fork
File> Clone> Cole o link:
Funções importantes do Fork
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.
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.
Commitando uma mudança
Commitando uma mudança
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í.
Push - Empurrar/Upload
Push - Empurrar/Upload
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!
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
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.
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.
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.
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.
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.
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
Merge - Mesclar
Merge é um processo que pode ser complexo em projetos grandes
com equipes grandes onde tem pessoas mexendo em coisas
simultaneamente.
Como fazer um Merge
Resolvendo conflitos em Merge
Às vezes os Merges podem ter conflitos quando as branches mescladas tiveram
mudança nos mesmos lugares:
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.
Resolvendo conflitos em Merge
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.
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.
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.
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.
Git Ignore
Não esqueça de fazer um commit
com o arquivo .gitignore depois de
adicionar alguma coisa no Ignore!
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
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?
O LFS precisa ser inicializado no
projeto para ser usado.
Para isso vá em:
Repository > Git LFS> Initialize Git LFS
Inicializando o LFS
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.
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
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.
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.
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
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
Obrigado :)
Erik Cruz
Contato: erikcruzdev@gmail.com
Rogue Snail: www.roguesnail.com
Erik Cruz - Usando Git na Game Jam - Agosto 2020

Mais conteúdo relacionado

Mais procurados

0396 Tajanstveni Jahač
0396  Tajanstveni Jahač0396  Tajanstveni Jahač
0396 Tajanstveni JahačTompa *
 
加速度センサーで円運動を検出する
加速度センサーで円運動を検出する加速度センサーで円運動を検出する
加速度センサーで円運動を検出するTakahiro (Poly) Horikawa
 
Contractbook-Pitchdeck.pdf
Contractbook-Pitchdeck.pdfContractbook-Pitchdeck.pdf
Contractbook-Pitchdeck.pdfGeorgeNelson33
 
0595. ZAGOR IZAZIVAČ
0595. ZAGOR IZAZIVAČ0595. ZAGOR IZAZIVAČ
0595. ZAGOR IZAZIVAČTompa *
 
καστράτο όσο πατάει η γάτα
καστράτο   όσο πατάει η γάτακαστράτο   όσο πατάει η γάτα
καστράτο όσο πατάει η γάταpinnokio.gr
 
LMS - 936 - Mister No - PLANINA LOBANJA
LMS - 936 - Mister No - PLANINA LOBANJALMS - 936 - Mister No - PLANINA LOBANJA
LMS - 936 - Mister No - PLANINA LOBANJAStripovizijacom
 
Lms 0044 teks viler - nevidljiva ruka (scanturion & damir & jock &a...
Lms 0044   teks viler - nevidljiva ruka (scanturion & damir & jock &a...Lms 0044   teks viler - nevidljiva ruka (scanturion & damir & jock &a...
Lms 0044 teks viler - nevidljiva ruka (scanturion & damir & jock &a...zoran radovic
 
Mutant Chronicles - Rulebook Second Edition
Mutant Chronicles - Rulebook Second EditionMutant Chronicles - Rulebook Second Edition
Mutant Chronicles - Rulebook Second Editionkreuzvd
 
0752. POVRATAK SUPERMAJKA
0752. POVRATAK SUPERMAJKA0752. POVRATAK SUPERMAJKA
0752. POVRATAK SUPERMAJKATompa *
 
LMS 001 - Teks Viler - Tajna zlatnog rudnika
LMS   001 - Teks Viler - Tajna zlatnog rudnikaLMS   001 - Teks Viler - Tajna zlatnog rudnika
LMS 001 - Teks Viler - Tajna zlatnog rudnikaStripovizijacom
 
Mutant Chronicles RPG The Brotherhood Sourcebook
Mutant Chronicles RPG The Brotherhood SourcebookMutant Chronicles RPG The Brotherhood Sourcebook
Mutant Chronicles RPG The Brotherhood Sourcebookkreuzvd
 
ZAGOR LMAX30_Ulice New Yorka
ZAGOR LMAX30_Ulice New YorkaZAGOR LMAX30_Ulice New Yorka
ZAGOR LMAX30_Ulice New YorkaStripovizijacom
 
Tex l 138 - Južno od Rio Grandea
Tex l 138 - Južno od Rio GrandeaTex l 138 - Južno od Rio Grandea
Tex l 138 - Južno od Rio GrandeaStripovizijacom
 
Tex Willer Libellus Kolor Biblioteka 003 - Satania
Tex Willer Libellus Kolor Biblioteka 003 - SataniaTex Willer Libellus Kolor Biblioteka 003 - Satania
Tex Willer Libellus Kolor Biblioteka 003 - SataniaStripovizijacom
 
O quadro que não quer acabar
O quadro que não quer acabarO quadro que não quer acabar
O quadro que não quer acabarElias Garcia
 

Mais procurados (20)

0396 Tajanstveni Jahač
0396  Tajanstveni Jahač0396  Tajanstveni Jahač
0396 Tajanstveni Jahač
 
加速度センサーで円運動を検出する
加速度センサーで円運動を検出する加速度センサーで円運動を検出する
加速度センサーで円運動を検出する
 
Ri st - TW - LUD 94
Ri st - TW - LUD 94Ri st - TW - LUD 94
Ri st - TW - LUD 94
 
Contractbook-Pitchdeck.pdf
Contractbook-Pitchdeck.pdfContractbook-Pitchdeck.pdf
Contractbook-Pitchdeck.pdf
 
0595. ZAGOR IZAZIVAČ
0595. ZAGOR IZAZIVAČ0595. ZAGOR IZAZIVAČ
0595. ZAGOR IZAZIVAČ
 
PTA Algiers, enviromental simulation
PTA  Algiers, enviromental simulationPTA  Algiers, enviromental simulation
PTA Algiers, enviromental simulation
 
καστράτο όσο πατάει η γάτα
καστράτο   όσο πατάει η γάτακαστράτο   όσο πατάει η γάτα
καστράτο όσο πατάει η γάτα
 
Tex l 094 -Rijeka straha
Tex l 094 -Rijeka strahaTex l 094 -Rijeka straha
Tex l 094 -Rijeka straha
 
LMS - 936 - Mister No - PLANINA LOBANJA
LMS - 936 - Mister No - PLANINA LOBANJALMS - 936 - Mister No - PLANINA LOBANJA
LMS - 936 - Mister No - PLANINA LOBANJA
 
Lms 0044 teks viler - nevidljiva ruka (scanturion & damir & jock &a...
Lms 0044   teks viler - nevidljiva ruka (scanturion & damir & jock &a...Lms 0044   teks viler - nevidljiva ruka (scanturion & damir & jock &a...
Lms 0044 teks viler - nevidljiva ruka (scanturion & damir & jock &a...
 
Mutant Chronicles - Rulebook Second Edition
Mutant Chronicles - Rulebook Second EditionMutant Chronicles - Rulebook Second Edition
Mutant Chronicles - Rulebook Second Edition
 
0752. POVRATAK SUPERMAJKA
0752. POVRATAK SUPERMAJKA0752. POVRATAK SUPERMAJKA
0752. POVRATAK SUPERMAJKA
 
LMS 001 - Teks Viler - Tajna zlatnog rudnika
LMS   001 - Teks Viler - Tajna zlatnog rudnikaLMS   001 - Teks Viler - Tajna zlatnog rudnika
LMS 001 - Teks Viler - Tajna zlatnog rudnika
 
مصحف الشمرلي ملون
مصحف الشمرلي   ملونمصحف الشمرلي   ملون
مصحف الشمرلي ملون
 
Mutant Chronicles RPG The Brotherhood Sourcebook
Mutant Chronicles RPG The Brotherhood SourcebookMutant Chronicles RPG The Brotherhood Sourcebook
Mutant Chronicles RPG The Brotherhood Sourcebook
 
ZAGOR LMAX30_Ulice New Yorka
ZAGOR LMAX30_Ulice New YorkaZAGOR LMAX30_Ulice New Yorka
ZAGOR LMAX30_Ulice New Yorka
 
Tex l 138 - Južno od Rio Grandea
Tex l 138 - Južno od Rio GrandeaTex l 138 - Južno od Rio Grandea
Tex l 138 - Južno od Rio Grandea
 
Tex Willer Libellus Kolor Biblioteka 003 - Satania
Tex Willer Libellus Kolor Biblioteka 003 - SataniaTex Willer Libellus Kolor Biblioteka 003 - Satania
Tex Willer Libellus Kolor Biblioteka 003 - Satania
 
O quadro que não quer acabar
O quadro que não quer acabarO quadro que não quer acabar
O quadro que não quer acabar
 
3-CARDIOLOGY (DIMS NOTES).pdf
3-CARDIOLOGY (DIMS NOTES).pdf3-CARDIOLOGY (DIMS NOTES).pdf
3-CARDIOLOGY (DIMS NOTES).pdf
 

Semelhante a Usando Git na Unity

Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJNathália Cruz de Oliveira
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJNathália Cruz de Oliveira
 
Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET ComputaçãoBruno Orlandi
 
Git - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesGit - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesLeandro Cavalcante
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta gitDiogo Souza Machado
 
Workshop sistema de versionamento de código - git
Workshop  sistema de versionamento de código - gitWorkshop  sistema de versionamento de código - git
Workshop sistema de versionamento de código - gitThiago Filadelfo
 
Git github tortoise git
Git github tortoise gitGit github tortoise git
Git github tortoise gitmaxrosan
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao gitDiogo Gomes
 
Controle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoControle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoFabricio Nogueira
 
Git e boas praticas!
Git e boas praticas!Git e boas praticas!
Git e boas praticas!Vitor Silva
 
Controle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de softwareControle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de softwareGilmar Pupo
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com GitRaphael Cruzeiro
 
Intervalo técnico Git/SVN
Intervalo técnico Git/SVNIntervalo técnico Git/SVN
Intervalo técnico Git/SVNLuciano Lima
 

Semelhante a Usando Git na Unity (20)

Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJ
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJ
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET Computação
 
Git - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de VersõesGit - Sistema Descentralizado de Controle de Versões
Git - Sistema Descentralizado de Controle de Versões
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta git
 
Go git - Presentation @Navita
Go git - Presentation @NavitaGo git - Presentation @Navita
Go git - Presentation @Navita
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
Workshop sistema de versionamento de código - git
Workshop  sistema de versionamento de código - gitWorkshop  sistema de versionamento de código - git
Workshop sistema de versionamento de código - git
 
Git github tortoise git
Git github tortoise gitGit github tortoise git
Git github tortoise git
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 
Controle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básicoControle de Versão Distribuído com Git básico
Controle de Versão Distribuído com Git básico
 
Git e boas praticas!
Git e boas praticas!Git e boas praticas!
Git e boas praticas!
 
Ferramentas para versionamento Utilizando git
Ferramentas para versionamento Utilizando gitFerramentas para versionamento Utilizando git
Ferramentas para versionamento Utilizando git
 
Controle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de softwareControle de versões distribuído para projetos de software
Controle de versões distribuído para projetos de software
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
 
Intervalo técnico Git/SVN
Intervalo técnico Git/SVNIntervalo técnico Git/SVN
Intervalo técnico Git/SVN
 
Git ao GitHub
Git ao GitHubGit ao GitHub
Git ao GitHub
 

Usando Git na Unity

  • 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.
  • 11. Clientes de GIT - Fork
  • 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
  • 16. Criando um repositório Repositório: Pasta com controle de versão do Git.
  • 17. Clonando um repositório Copie o link do repositório:
  • 18. Clonando um repositório - Fork File> Clone> Cole o link:
  • 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.
  • 36. Como fazer um Merge
  • 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