SlideShare uma empresa Scribd logo
Git – Hands On
Rafael S Bezerra
Paulo K Mello
Roteiro
• Introdução
• Conceitos Básicos
• Clonar o repositório – git clone
• Criar um commit – git add / commit
• Desfazer um commit – git checkout / reset
• Atualizar o repositório local – git pull / fetch / merge
• Exercício: um monte de commits
• Ver o estado do repo – git log / diff
• Conclusões
Introdução
Por que eu aprenderia git?
Em que isso vai ser útil?
Não é melhor só colocar o projeto no Dropbox? Dá menos trabalho...
Introdução
• Pra que git é útil?
• Controle de Versão
– Controlar mudanças
– Nomear e armazenar versões
– Entender a história
– Backup
– Colaboração
Introdução
• Perguntas importantes:
– Quem fez isso?!
– Mas por que?! O que se passou na cabeça dessa
pessoa?
– Desde quando esse bug existe?!
– Sem condições... Vou desfazer essa bagunça aqui
– Agora tá bom. Fechar uma versão.
Introdução
Fazer parte da comunidade
mundial de devs
Introdução
• Essa comunidade não consegue decidir:
– Qual sistema operacional usar
– Qual editor de texto usar
– Que linguagens usar pra que
– camelCase ou underscore_separated
Introdução
Mas toda essa comunidade de
gente exigente usa git
A maioria dos projetos open-
source que vocês conhecem
estão versionados usando git
(e no github)
Introdução
Conceitos Básicos
• AKA: expressões semi-confusas que você vai
ver quando tiver lendo sobre git
Versionamento distribuído
Commits atômicos
Árvore de commits
Conceitos Básicos
github.com/
Quem ainda não tem conta, crie!
git config --global user.name “<name>”
git config --global user.email my@email.com
Clonar o Repositorio
git clone http://github.com/rafaelsbz/db-git-handson
cd db-git-handson
ls -a
git status
git remote -v
Clonar o Repositorio
• Preparando o projeto para a IDE:
– gradle eclipse
• Importando o projeto no Eclipse:
– Importe o projeto
• File -> Import -> Existing Projects Into Workspace
• Select Root Directory -> Browse
• Escolha o diretório developer/db-git-handson
• Ok -> Finish
Commit
• Modificar o código e versionar nossa mudança
• Principais conceitos:
– Staging Area
– Working Copy
• Comandos:
– git add
– git commit
– git push
Commit
• Passos (Prestem atenção!)
– Fazer alterações
– Ver o que alteramos: git status
– Escolher o que vai no commit: git add
– Criar o commit: git commit
– Ver o commit criado: git log
– Ver que meu repositório está à frente do remoto:
git status
Commit
Enviar nossas mudanças pro repositório remoto
IMPORTANTE:
Somente nós na frente vamos fazer isso
(por enquanto :)
Commit
git push origin master
Repositório
remoto
Branch
Desfazendo o Commit
git reset --hard HEAD~1
Reseta história e
arquivos
Commit atual – 1
Ou seja, pro commit anterior
Atualizar o repositório
• Pegar o que modificaram no github (repo
remoto)
• Duas maneiras:
– git pull
• Um comando só. Abstrai a lógica dos comandos abaixo
– git fetch -> git merge ou git rebase
• Como o pull funciona por trás dos panos
• Modo mais seguro de você entender o que está
trazendo pro seu repositório!
Atualizar o repositório
git pull
Se você viu “Fast Forward”, tudo OK!
git log
Você deve ver o commit novo!
Atualizar o repositório
git fetch
Veja que o branch origin/master foi atualizado
git rebase origin/master
Fast Forward = OK!
git log
Você deve ver o commit novo!
Atualizar o repositório
Demonstração: Diferença entre rebase e merge
Simulando um Cenário Real
• Usando o eclipse, todos vocês vão criar arquivos na pasta
src/main/resources/
– Botão direito na pasta
– New -> File
– Dê um nome
– Escreva alguma coisa
• Depois vocês vão fazer um commit com esse(s) arquivos
– Execute o projeto no eclipse ou usando o comando gradle run no
terminal pra (tentar :) ver que ele imprimiu o conteúdo do seu arquivo
• Finalmente, vocês vão tentar fazer push desses arquivos
– Se alguém tiver feito push antes, vocês terão que atualizar o
repositório antes
• Nós temos tempo limitado pra isso
– Se alguém não conseguir, tudo bem!
– Crie um repo no github e vá tentando em casa 
Simulando um Cenário Real
• git status
– Ver o que está acontecendo. Use o tempo todo 
• git fetch
– Atualiza a sua visão do repositório remoto (origin/master)
• git rebase origin/master
– Atualiza o seu branch master em relação ao remoto (origin)
– Lembre-se: você não pode atualizar seu branch se tiver mudanças
não commitadas
• git add <arquivo>
– Adiciona mudanças na staging área
• git commit –m “mensagem”
– Cria um commit com todas as mudanças adicionadas atualmente
• git push origin master
– Envia para o github. Tenta enviar o estado atual do seu repo como o
estado atual.
– Vai falhar se alguém fez push antes. Nesse caso, atualize seu repo.
Explorando Logs
git log --name-status
Exibe o nome dos arquivos alterados no commit
git log <commit1> .. <commit2>
Mostra os commits a partir do <commit1> até o <commit2>
git log <commit1> .. HEAD
Mostra os commits a partir do <commit1> até o atual
Explorando Logs
git diff
Mostra as diferenças textuais entre um commit e outro
git diff HEAD~1 HEAD
Diferença entre o commit anterior e o atual
git diff <commit1> .. HEAD
Diferença entre um commit arbitrário e o atual
Conclusões
• Algumas boas práticas:
– Mensagens de commit extremante claras
• Primeira linha resumindo o commit
• Segunda linha em branco
• Texto explicando o que você fez, seu raciocínio,
possíveis problemas, etc..
– Não modificar história publicada
• Ou seja, não usar git push --force
• git revert se for necessário desfazer as alterações de
um commit
Conclusões
• Mais boas práticas:
– Nunca versionar arquivos gerados
automaticamente
• Exemplos:
– Arquivos .class gerados na compilação
– Documentação gerada automaticamente
• Coloque esses arquivos no seu .gitignore e seja feliz 
– Não versionar binários / código fonte de
dependências
• Não crie uma pasta /lib com um monte de .jars dentro!
• Use o gerenciador de dependências pra sua linguagem
e versione o arquivo de configuração dele
Conclusões
• Alguns pontos interessantes que não cobrimos
aqui:
– Simples
• Criar um repositório (git init)
• .gitignore
• Pull requests
– Um pouco mais complexos:
• Branches
• Commits locais e squash de commits
• Múltiplos repositórios remotos
• Configuração de editor e ferramentas de diff/merge
• Resolução de conflitos
Conclusões
• Vocês praticaram:
– Clonar um repo existente
– Commitar
– Atualizar o repositório local
– Enviar commits para um repositório remoto
– Entender o que está acontecendo na história do
seu repo
Conclusões
• Minha sugestão pessoal é vocês começarem a
usar git nos projetos pessoais de vocês
– Trabalhos individuais
• Usar commits para organizar blocos de trabalho
• Criar branches pra coisas experimentais
• Usar repositórios remotos para backup
– Trabalhos em grupo
• Criar um repositório compartilhado
Informações Adicionais
• Sobre git:
– Bitbucket:
• Outro servidor de repositórios gratuito
• Repositórios privados / mais controle de acesso
– Tutorial do github:
• https://try.github.io/
• Sobre o Setup:
– Linux Debian
– Java: openjdk 8.0 + Gradle
– Terminal: zshell + oh-my-zsh
– Eclipse 
Obrigado
Dúvidas? Feedbacks?
Rafael Santos Bezerra
bezerrar@dbserver.com.br
rafaelsbz@gmail.com
github.com/rafaelsbz
Paulo Eduardo Kopzinski Mello
mellop@dbserver.com.br
eduardo@kopzinski.com.br
github.com/kopzinski

Mais conteúdo relacionado

Mais procurados

Git - GitHub
Git - GitHubGit - GitHub
Git - GitHubWagner
 
Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Victor Souza
 
Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git FlowControle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git FlowLucas Araújo Mezêncio
 
Conceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoConceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoFelipe
 
Aula 2 - Curso Git e Github - Webschool
Aula 2 - Curso Git e Github - WebschoolAula 2 - Curso Git e Github - Webschool
Aula 2 - Curso Git e Github - WebschoolBruno Orlandi
 
Aula 3 - Curso Git e Github - Webschool
Aula 3 - Curso Git e Github - WebschoolAula 3 - Curso Git e Github - Webschool
Aula 3 - Curso Git e Github - WebschoolBruno Orlandi
 
Git e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson AjacksonGit e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson AjacksonAlysson Ajackson
 
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
 
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
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta gitDiogo Souza Machado
 
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Mauro George
 
Git e git hub para iniciantes
Git e git hub para iniciantesGit e git hub para iniciantes
Git e git hub para iniciantesMario Ernesto
 
Como participar de projetos Open Source no Github?
Como participar de projetos Open Source no Github?Como participar de projetos Open Source no Github?
Como participar de projetos Open Source no Github?Guilherme Farias
 

Mais procurados (20)

Git e GitHub - Conceitos Básicos
Git e GitHub - Conceitos BásicosGit e GitHub - Conceitos Básicos
Git e GitHub - Conceitos Básicos
 
Git v2
Git v2Git v2
Git v2
 
Git
GitGit
Git
 
Git - GitHub
Git - GitHubGit - GitHub
Git - GitHub
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016
 
Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git FlowControle de Versão com Git e como Otimizar seu Workflow com Git Flow
Controle de Versão com Git e como Otimizar seu Workflow com Git Flow
 
Conceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de códigoConceitos e exemplos em versionamento de código
Conceitos e exemplos em versionamento de código
 
Aula 2 - Curso Git e Github - Webschool
Aula 2 - Curso Git e Github - WebschoolAula 2 - Curso Git e Github - Webschool
Aula 2 - Curso Git e Github - Webschool
 
Aula 3 - Curso Git e Github - Webschool
Aula 3 - Curso Git e Github - WebschoolAula 3 - Curso Git e Github - Webschool
Aula 3 - Curso Git e Github - Webschool
 
Git e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson AjacksonGit e Github para Iniciantes by Alysson Ajackson
Git e Github para Iniciantes by Alysson Ajackson
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao 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
 
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
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta git
 
Git e Github
Git e GithubGit e Github
Git e Github
 
Git
GitGit
Git
 
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
Git para iniciantes v1.3.0 @ PHP Conference Brasil 2012
 
Git e git hub para iniciantes
Git e git hub para iniciantesGit e git hub para iniciantes
Git e git hub para iniciantes
 
Como participar de projetos Open Source no Github?
Como participar de projetos Open Source no Github?Como participar de projetos Open Source no Github?
Como participar de projetos Open Source no Github?
 

Destaque

Destaque (12)

Semana da Mulher na Tecnologia_Jogos cooperativos
Semana da Mulher na Tecnologia_Jogos cooperativosSemana da Mulher na Tecnologia_Jogos cooperativos
Semana da Mulher na Tecnologia_Jogos cooperativos
 
Carreira de Testes
Carreira de TestesCarreira de Testes
Carreira de Testes
 
Moodle
MoodleMoodle
Moodle
 
Carlos montesino
Carlos montesinoCarlos montesino
Carlos montesino
 
Introducao ao Mobile
Introducao ao Mobile Introducao ao Mobile
Introducao ao Mobile
 
Linguagens e Frameworks
Linguagens e FrameworksLinguagens e Frameworks
Linguagens e Frameworks
 
Carreira em TI
Carreira em TICarreira em TI
Carreira em TI
 
El mundo de los videojuegos
El mundo de los videojuegosEl mundo de los videojuegos
El mundo de los videojuegos
 
Vocabulary Game (11-1)
Vocabulary Game (11-1)Vocabulary Game (11-1)
Vocabulary Game (11-1)
 
Introdução ao BDD com BDD Warriors
Introdução ao BDD com BDD WarriorsIntrodução ao BDD com BDD Warriors
Introdução ao BDD com BDD Warriors
 
BDD Warriors and Other Games
BDD Warriors and Other GamesBDD Warriors and Other Games
BDD Warriors and Other Games
 
Budaya Nasional dan Interaksi global
Budaya Nasional dan Interaksi globalBudaya Nasional dan Interaksi global
Budaya Nasional dan Interaksi global
 

Semelhante a GIT - Hands-On

Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET ComputaçãoBruno Orlandi
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACDanilo Pinotti
 
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
 
Controlo de Versões Distribuído com Git
Controlo de Versões Distribuído com GitControlo de Versões Distribuído com Git
Controlo de Versões Distribuído com GitC. Augusto Proiete
 
Controlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto ProieteControlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto ProieteComunidade NetPonto
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Danilo Pinotti
 
Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º diaArmando Couto
 
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
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com GitRaphael Cruzeiro
 
Conhecendo o git.
Conhecendo o git.Conhecendo o git.
Conhecendo o git.Rafael Ivan
 
Git workshop
Git workshopGit workshop
Git workshopYuri Reis
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareAldson Diego
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao GitOto Junior
 

Semelhante a GIT - Hands-On (20)

Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET Computação
 
Oficina de Git EEDACT2015
Oficina de Git EEDACT2015Oficina de Git EEDACT2015
Oficina de Git EEDACT2015
 
Git 101
Git 101Git 101
Git 101
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
Git
GitGit
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 GitHub
 
Gerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHubGerenciando projetos com Git e GitHub
Gerenciando projetos com Git e GitHub
 
Curso git-0001
Curso git-0001Curso git-0001
Curso git-0001
 
Controlo de Versões Distribuído com Git
Controlo de Versões Distribuído com GitControlo de Versões Distribuído com Git
Controlo de Versões Distribuído com Git
 
Controlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto ProieteControlo de Versões Distribuído com Git - C. Augusto Proiete
Controlo de Versões Distribuído com Git - C. Augusto Proiete
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Git
GitGit
Git
 
Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º dia
 
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
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
 
Conhecendo o git.
Conhecendo o git.Conhecendo o git.
Conhecendo o git.
 
Git workshop
Git workshopGit workshop
Git workshop
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de Software
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 

GIT - Hands-On

  • 1. Git – Hands On Rafael S Bezerra Paulo K Mello
  • 2. Roteiro • Introdução • Conceitos Básicos • Clonar o repositório – git clone • Criar um commit – git add / commit • Desfazer um commit – git checkout / reset • Atualizar o repositório local – git pull / fetch / merge • Exercício: um monte de commits • Ver o estado do repo – git log / diff • Conclusões
  • 3. Introdução Por que eu aprenderia git? Em que isso vai ser útil? Não é melhor só colocar o projeto no Dropbox? Dá menos trabalho...
  • 4. Introdução • Pra que git é útil? • Controle de Versão – Controlar mudanças – Nomear e armazenar versões – Entender a história – Backup – Colaboração
  • 5. Introdução • Perguntas importantes: – Quem fez isso?! – Mas por que?! O que se passou na cabeça dessa pessoa? – Desde quando esse bug existe?! – Sem condições... Vou desfazer essa bagunça aqui – Agora tá bom. Fechar uma versão.
  • 6. Introdução Fazer parte da comunidade mundial de devs
  • 7. Introdução • Essa comunidade não consegue decidir: – Qual sistema operacional usar – Qual editor de texto usar – Que linguagens usar pra que – camelCase ou underscore_separated
  • 8. Introdução Mas toda essa comunidade de gente exigente usa git A maioria dos projetos open- source que vocês conhecem estão versionados usando git (e no github)
  • 10. Conceitos Básicos • AKA: expressões semi-confusas que você vai ver quando tiver lendo sobre git Versionamento distribuído Commits atômicos Árvore de commits
  • 11. Conceitos Básicos github.com/ Quem ainda não tem conta, crie! git config --global user.name “<name>” git config --global user.email my@email.com
  • 12. Clonar o Repositorio git clone http://github.com/rafaelsbz/db-git-handson cd db-git-handson ls -a git status git remote -v
  • 13. Clonar o Repositorio • Preparando o projeto para a IDE: – gradle eclipse • Importando o projeto no Eclipse: – Importe o projeto • File -> Import -> Existing Projects Into Workspace • Select Root Directory -> Browse • Escolha o diretório developer/db-git-handson • Ok -> Finish
  • 14. Commit • Modificar o código e versionar nossa mudança • Principais conceitos: – Staging Area – Working Copy • Comandos: – git add – git commit – git push
  • 15. Commit • Passos (Prestem atenção!) – Fazer alterações – Ver o que alteramos: git status – Escolher o que vai no commit: git add – Criar o commit: git commit – Ver o commit criado: git log – Ver que meu repositório está à frente do remoto: git status
  • 16. Commit Enviar nossas mudanças pro repositório remoto IMPORTANTE: Somente nós na frente vamos fazer isso (por enquanto :)
  • 17. Commit git push origin master Repositório remoto Branch
  • 18. Desfazendo o Commit git reset --hard HEAD~1 Reseta história e arquivos Commit atual – 1 Ou seja, pro commit anterior
  • 19. Atualizar o repositório • Pegar o que modificaram no github (repo remoto) • Duas maneiras: – git pull • Um comando só. Abstrai a lógica dos comandos abaixo – git fetch -> git merge ou git rebase • Como o pull funciona por trás dos panos • Modo mais seguro de você entender o que está trazendo pro seu repositório!
  • 20. Atualizar o repositório git pull Se você viu “Fast Forward”, tudo OK! git log Você deve ver o commit novo!
  • 21. Atualizar o repositório git fetch Veja que o branch origin/master foi atualizado git rebase origin/master Fast Forward = OK! git log Você deve ver o commit novo!
  • 22. Atualizar o repositório Demonstração: Diferença entre rebase e merge
  • 23. Simulando um Cenário Real • Usando o eclipse, todos vocês vão criar arquivos na pasta src/main/resources/ – Botão direito na pasta – New -> File – Dê um nome – Escreva alguma coisa • Depois vocês vão fazer um commit com esse(s) arquivos – Execute o projeto no eclipse ou usando o comando gradle run no terminal pra (tentar :) ver que ele imprimiu o conteúdo do seu arquivo • Finalmente, vocês vão tentar fazer push desses arquivos – Se alguém tiver feito push antes, vocês terão que atualizar o repositório antes • Nós temos tempo limitado pra isso – Se alguém não conseguir, tudo bem! – Crie um repo no github e vá tentando em casa 
  • 24. Simulando um Cenário Real • git status – Ver o que está acontecendo. Use o tempo todo  • git fetch – Atualiza a sua visão do repositório remoto (origin/master) • git rebase origin/master – Atualiza o seu branch master em relação ao remoto (origin) – Lembre-se: você não pode atualizar seu branch se tiver mudanças não commitadas • git add <arquivo> – Adiciona mudanças na staging área • git commit –m “mensagem” – Cria um commit com todas as mudanças adicionadas atualmente • git push origin master – Envia para o github. Tenta enviar o estado atual do seu repo como o estado atual. – Vai falhar se alguém fez push antes. Nesse caso, atualize seu repo.
  • 25. Explorando Logs git log --name-status Exibe o nome dos arquivos alterados no commit git log <commit1> .. <commit2> Mostra os commits a partir do <commit1> até o <commit2> git log <commit1> .. HEAD Mostra os commits a partir do <commit1> até o atual
  • 26. Explorando Logs git diff Mostra as diferenças textuais entre um commit e outro git diff HEAD~1 HEAD Diferença entre o commit anterior e o atual git diff <commit1> .. HEAD Diferença entre um commit arbitrário e o atual
  • 27. Conclusões • Algumas boas práticas: – Mensagens de commit extremante claras • Primeira linha resumindo o commit • Segunda linha em branco • Texto explicando o que você fez, seu raciocínio, possíveis problemas, etc.. – Não modificar história publicada • Ou seja, não usar git push --force • git revert se for necessário desfazer as alterações de um commit
  • 28. Conclusões • Mais boas práticas: – Nunca versionar arquivos gerados automaticamente • Exemplos: – Arquivos .class gerados na compilação – Documentação gerada automaticamente • Coloque esses arquivos no seu .gitignore e seja feliz  – Não versionar binários / código fonte de dependências • Não crie uma pasta /lib com um monte de .jars dentro! • Use o gerenciador de dependências pra sua linguagem e versione o arquivo de configuração dele
  • 29. Conclusões • Alguns pontos interessantes que não cobrimos aqui: – Simples • Criar um repositório (git init) • .gitignore • Pull requests – Um pouco mais complexos: • Branches • Commits locais e squash de commits • Múltiplos repositórios remotos • Configuração de editor e ferramentas de diff/merge • Resolução de conflitos
  • 30. Conclusões • Vocês praticaram: – Clonar um repo existente – Commitar – Atualizar o repositório local – Enviar commits para um repositório remoto – Entender o que está acontecendo na história do seu repo
  • 31. Conclusões • Minha sugestão pessoal é vocês começarem a usar git nos projetos pessoais de vocês – Trabalhos individuais • Usar commits para organizar blocos de trabalho • Criar branches pra coisas experimentais • Usar repositórios remotos para backup – Trabalhos em grupo • Criar um repositório compartilhado
  • 32. Informações Adicionais • Sobre git: – Bitbucket: • Outro servidor de repositórios gratuito • Repositórios privados / mais controle de acesso – Tutorial do github: • https://try.github.io/ • Sobre o Setup: – Linux Debian – Java: openjdk 8.0 + Gradle – Terminal: zshell + oh-my-zsh – Eclipse 
  • 33. Obrigado Dúvidas? Feedbacks? Rafael Santos Bezerra bezerrar@dbserver.com.br rafaelsbz@gmail.com github.com/rafaelsbz Paulo Eduardo Kopzinski Mello mellop@dbserver.com.br eduardo@kopzinski.com.br github.com/kopzinski