SlideShare une entreprise Scribd logo
1  sur  65
Télécharger pour lire hors ligne
Introdução ao Git
(Por que não consigo mais usar SVN)
Oi!
Hanneli (a.k.a. @hannelita)!
Software developer!
Middleware Consultant at !
Café e Pokémon <3
O que vamos ver hoje?
Controle de versão - por que preciso disso?!
O surgimento do Git!
Primeiros passos com Git!
Para onde ir depois do básico!
Fotos e GIFS
Yet another talk about Git?
Tenho dificuldade para aprender.
Palestra com primeiros passos QUE FUNCIONAM, sem
complicação.
Seu primeiro dia numa
empresa
Seu primeiro dia numa
empresa
Code Code Code
Se o projeto já está andando, alguém
precisa lhe fornecer o código
Como obter o código?
1. Pendrive?
Pendrive?
Rápido
#COMOFAZ
SMP
Sincronização Manual de
Pendrives não parece legal.
2. Compartilhar pela rede
Projeto
Compartilhar pela rede
Compartilhar pela rede
Todos com acesso ao código
Compartilhar pela rede
Todos com acesso ao código
LOL.java WTFWTF.java
LOL.java
#COMOFAZ
Nenhum dos casos parece ser
um bom cenário para distribuir e
organizar o código numa equipe.
Evolução nos repositórios
de código
Versão 3!
Versão 2!
Versão 1
SVN
SVN
Ajuda com o Merge
Código Centralizado
Versionar de forma
fácil e intuitiva
Problem Solved!
Problemas
• Conflitos
Problemas
• Como interromper a criação de uma tarefa e
começar outra?
Problemas
• Quero começar uma feature a partir de um código
que você ainda não comittou
Problemas
• A PASTA .svn CORROMPEU!
Algo mais eficiente
De volta a 2005
Manter o Kernel!
Manter o Kernel!
Versão 3!
Versão 2!
Versão 1
Controle de versão distribuído
Git
Quais suas primeiras
impressões sobre Git?
• SVN é mais fácil!
• Git é muito complexo
• Não sei mexer nisso!
Por que Git parece tão
traumático?
Por que Git parece tão
traumático?
• Command Line
• Comandos são diferentes do SVN
• Novos conceitos
Supere seus medos
Git - primeiros passos
1. Obter cópia local do
projeto
2. Receber alterações
3. Merge das
alterações locais
com remotas
4. Compartilhar
alterações
git clone <URL do repo>
git pull
git add <FILE>!
git commit -m “Commit"!
git push
git remote add remote_repo <URL repo>
Acredite, isso já resolve
muitos casos de uso.
Git - e os conflitos?
A Receita de Bolo para
minimizar conflitos
• Faça suas alterações
• git checkout -b work
• git add <alterações>
• git commit -m
"Alterações"
• git checkout master
• git pull
• git checkout work
• git rebase master
• git checkout master
• git merge work
• git push
A Receita de Bolo para
minimizar conflitos
Explicando a receita
(programe, duh)
1. Faça suas alterações
2. git checkout -b work
Explicando a receita
O Git permite que você trabalhe em diferentes 'workspaces'
Explicando a receita
Projeto
(cópia local)
git checkout -b
"Cópia" da cópia local
Posso alternar entre as "cópias"
Uma “cópia" não é uma cópia em disco
Uma “cópia" é um snapshot
Branch
Branches
Explicando a receita
Projeto
(cópia local)
Branch master
git checkout -b work
Snapshot
Branch work
Baseado na branch master
git checkout -b lolol
Snapshot
Branch lolol
Baseado na branch work
Cria nova branch
Explicando a receita
3. git add <alterações>
“Git, essas alterações são importantes! Quero que meu
Snapshot as veja!"
4. git commit -m "Mensagem"
Meu snapshot local possui as alterações que quero enviar
para o repositório remoto
Explicando a receita
5. git checkout master
branch work
git checkout
branch master
git checkout <nome Branch>
Alterna entre branches existentes
Explicando a receita
6. git pull
branch master
Pega as alterações do repositório remoto e faz merge
Explicando a receita
Onde fizemos as alterações? Master ou work?
Se você não alterar o master, pode ter sempre
uma cópia local do repositório atualizado sem ter conflitos!
Explicando a receita
7. git checkout work
branch master
git checkout
branch work
Explicando a receita
8. git rebase master
Explicando a receita
Existem 2 formas para fazer merge no Git
git merge git rebase
rebase possui vários usosOcorre ao fazer um git pull
"rebase faz um merge mais inteligente"
Explicando a receita
Por que tive que trocar de branch para fazer rebase?
"rebase faz um merge mais inteligente"
Axioma
Só é seguro fazer rebase em branches locais
Se não criássemos outra branch, faríamos:
branch master
rebase
Explicando a receita
Explicando a receita
A chance de não ocorrer conflitos com rebase é maior do que
com git merge
"rebase faz um merge mais inteligente"
Só é seguro fazer rebase em branches locais
Explicando a receita
Deixe os conflitos ocorrerem em sua snapshot de trabalho.
branch work
Explicando a receita
9. git checkout master
branch work
git checkout
branch master
Explicando a receita
10. git merge work
Se o rebase foi bem sucedido, o merge não terá problema
branch master
git rebase
branch work
Conflitos!
ocorrem!
aqui
git merge
Explicando a receita
11. git push
Envia as alterações para o repositório remoto
branch master
Complementando a receita
11. git branch -d work
Remove a branch work. Nesse momento ela não é mais útil.
Uma nova task, uma nova branch
Onde posso conseguir um
servidor Git?
Faça um ;D
Github
Bitbucket
E aquela história de ‘controle
de versão distribuído’?
git remote add server <URL>
server
git remote add Outro_server <URL2>
Outro_server
Próximos passos de estudo
Branches remotas
git stash
git reset
git revert
git bisect
git blame
Hooks git config
Ferramentas gráficas
Depois de um tempo com
Git…
NÃO CONSIGO VOLTARA PARA O SVN!
Obrigada!
Perguntas?
@hannelita
hannelita@gmail.com
Bibliografia
http://git-scm.com/book
http://gitref.org/

Contenu connexe

Tendances

Android DevConference - Aumentando sua produtividade no Android Studio
Android DevConference - Aumentando sua produtividade no Android StudioAndroid DevConference - Aumentando sua produtividade no Android Studio
Android DevConference - Aumentando sua produtividade no Android StudioiMasters
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com JenkinsHigor Nucci
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsGilmar Pupo
 
Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...
Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...
Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...Giovanni Bassi
 
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...tdc-globalcode
 
7Masters - Devops - Do legado ao ci cd em 7 minutos
7Masters - Devops - Do legado ao ci cd em 7 minutos7Masters - Devops - Do legado ao ci cd em 7 minutos
7Masters - Devops - Do legado ao ci cd em 7 minutosiMasters
 
[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistrano[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistranoCode Experts Learning
 
Gitlab flow solo (pt-BR)
Gitlab flow solo (pt-BR)Gitlab flow solo (pt-BR)
Gitlab flow solo (pt-BR)viniciusban
 
Gitlab flow solo (minimo)
Gitlab flow solo (minimo)Gitlab flow solo (minimo)
Gitlab flow solo (minimo)viniciusban
 
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...Edison Costa
 
Montando um ambiente de desenvolvimento WordPress utilizando Composer e GIT
Montando um ambiente de desenvolvimento WordPress utilizando Composer e GITMontando um ambiente de desenvolvimento WordPress utilizando Composer e GIT
Montando um ambiente de desenvolvimento WordPress utilizando Composer e GITLeo Baiano
 
Android DevConference - Firebase para desenvolvedores
Android DevConference - Firebase para desenvolvedoresAndroid DevConference - Firebase para desenvolvedores
Android DevConference - Firebase para desenvolvedoresiMasters
 
GitHub Boas Práticas
GitHub Boas PráticasGitHub Boas Práticas
GitHub Boas PráticasCDS
 
Criação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao AgileCriação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao AgileRobson Agapito Correa
 

Tendances (20)

Android DevConference - Aumentando sua produtividade no Android Studio
Android DevConference - Aumentando sua produtividade no Android StudioAndroid DevConference - Aumentando sua produtividade no Android Studio
Android DevConference - Aumentando sua produtividade no Android Studio
 
Integração contínua com Jenkins
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com Jenkins
 
Integração contínua em PHP com Jenkins
Integração contínua em PHP com JenkinsIntegração contínua em PHP com Jenkins
Integração contínua em PHP com Jenkins
 
Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...
Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...
Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...
 
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
TDC2016POA | Trilha Infraestrutura - Produção nove vezes ao dia - Como um tim...
 
7Masters - Devops - Do legado ao ci cd em 7 minutos
7Masters - Devops - Do legado ao ci cd em 7 minutos7Masters - Devops - Do legado ao ci cd em 7 minutos
7Masters - Devops - Do legado ao ci cd em 7 minutos
 
Gitlab flow
Gitlab flowGitlab flow
Gitlab flow
 
TDC 2018
TDC 2018TDC 2018
TDC 2018
 
Jenkins
JenkinsJenkins
Jenkins
 
[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistrano[Mini Palestra] - Deploy de-apps-php-com-capistrano
[Mini Palestra] - Deploy de-apps-php-com-capistrano
 
Gitlab flow solo (pt-BR)
Gitlab flow solo (pt-BR)Gitlab flow solo (pt-BR)
Gitlab flow solo (pt-BR)
 
Gitlab flow solo (minimo)
Gitlab flow solo (minimo)Gitlab flow solo (minimo)
Gitlab flow solo (minimo)
 
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...
 
Montando um ambiente de desenvolvimento WordPress utilizando Composer e GIT
Montando um ambiente de desenvolvimento WordPress utilizando Composer e GITMontando um ambiente de desenvolvimento WordPress utilizando Composer e GIT
Montando um ambiente de desenvolvimento WordPress utilizando Composer e GIT
 
Android DevConference - Firebase para desenvolvedores
Android DevConference - Firebase para desenvolvedoresAndroid DevConference - Firebase para desenvolvedores
Android DevConference - Firebase para desenvolvedores
 
Ruby Conf Brasil 2015
Ruby Conf Brasil 2015Ruby Conf Brasil 2015
Ruby Conf Brasil 2015
 
Automatizando seu deploy com Deployer e Gitlab CI
Automatizando seu deploy com Deployer e Gitlab CIAutomatizando seu deploy com Deployer e Gitlab CI
Automatizando seu deploy com Deployer e Gitlab CI
 
Automatizando seu deploy com Deployer e Gitlab CI
Automatizando seu deploy com Deployer e Gitlab CIAutomatizando seu deploy com Deployer e Gitlab CI
Automatizando seu deploy com Deployer e Gitlab CI
 
GitHub Boas Práticas
GitHub Boas PráticasGitHub Boas Práticas
GitHub Boas Práticas
 
Criação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao AgileCriação de uma equipe de QAs, do Waterfall ao Agile
Criação de uma equipe de QAs, do Waterfall ao Agile
 

En vedette

En vedette (7)

Workshop ABC Paroquias (09.07)
Workshop ABC Paroquias (09.07)Workshop ABC Paroquias (09.07)
Workshop ABC Paroquias (09.07)
 
Pato atividades
Pato atividadesPato atividades
Pato atividades
 
luckimports catálogo
luckimports catálogoluckimports catálogo
luckimports catálogo
 
210 jogo do quadrado
210 jogo do quadrado210 jogo do quadrado
210 jogo do quadrado
 
24 tec coordenação motora para autistas 4
24 tec coordenação motora para autistas 424 tec coordenação motora para autistas 4
24 tec coordenação motora para autistas 4
 
Chatolandia.
Chatolandia.Chatolandia.
Chatolandia.
 
26 autismo planejamento
26 autismo planejamento26 autismo planejamento
26 autismo planejamento
 

Similaire à Introdução ao Git

Workshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHubWorkshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHubGilson Junior
 
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
 
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
 
Processo de desenvolvimento na samba
Processo de desenvolvimento na sambaProcesso de desenvolvimento na samba
Processo de desenvolvimento na sambajoaogmaciel
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com GitRaphael Cruzeiro
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Erik Cruz
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao gitDiogo Gomes
 
Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET ComputaçãoBruno Orlandi
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta gitDiogo Souza Machado
 
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Tchelinux
 
Git e boas praticas!
Git e boas praticas!Git e boas praticas!
Git e boas praticas!Vitor Silva
 
Git Merge e Rebase - The goal and differences
Git Merge e Rebase - The goal and differencesGit Merge e Rebase - The goal and differences
Git Merge e Rebase - The goal and differencesSuelen Carvalho
 

Similaire à Introdução ao Git (20)

Workshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHubWorkshop de Introdução ao Git GitHub
Workshop de Introdução ao Git GitHub
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Sendo um GIT master
Sendo um GIT masterSendo um GIT master
Sendo um GIT master
 
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
 
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
 
Git básico
Git básicoGit básico
Git básico
 
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
 
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
 
Processo de desenvolvimento na samba
Processo de desenvolvimento na sambaProcesso de desenvolvimento na samba
Processo de desenvolvimento na samba
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
 
Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021Usando Git na Unity - Gaming For All 2021
Usando Git na Unity - Gaming For All 2021
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 
Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET Computação
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta git
 
Git
GitGit
Git
 
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
Git em pequenos projetos - Sandro Custódio - Tchelinux Livramento 2019
 
Git e boas praticas!
Git e boas praticas!Git e boas praticas!
Git e boas praticas!
 
Git Merge e Rebase - The goal and differences
Git Merge e Rebase - The goal and differencesGit Merge e Rebase - The goal and differences
Git Merge e Rebase - The goal and differences
 
Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 

Plus de Hanneli Tavante

Plus de Hanneli Tavante (7)

Fiz em C e me arrependi
Fiz em C e me arrependiFiz em C e me arrependi
Fiz em C e me arrependi
 
Mat022 edo2
Mat022 edo2Mat022 edo2
Mat022 edo2
 
Mat003 caderno hanneli
Mat003 caderno hanneliMat003 caderno hanneli
Mat003 caderno hanneli
 
Circuitos integrados caderno_hanneli
Circuitos integrados caderno_hanneliCircuitos integrados caderno_hanneli
Circuitos integrados caderno_hanneli
 
Jboss tutorial
Jboss tutorialJboss tutorial
Jboss tutorial
 
MCC- Apostila - Prof. Délvio
MCC- Apostila - Prof. DélvioMCC- Apostila - Prof. Délvio
MCC- Apostila - Prof. Délvio
 
Caderno dsp
Caderno dspCaderno dsp
Caderno dsp
 

Introdução ao Git