SlideShare uma empresa Scribd logo
1 de 15
Introdução ao
git
Diogo Gomes <dgomes@ua.pt>
O que é o git ?
• Sistema de controlo de versões
• Criado em 2005 por Linus Torvalds
• Trata-se de um Sistema Distribuído de Controlo de Versões (DVCS)
• Não existe um servidor central, todos programadores têm uma cópia de todas as alterações
• Possibilita desenvolvimento completamente offline
• Seguro através do uso de SHA1 para criptograficamente fazer a rastreabilidade de todas
as alterações.
• Flexível pois suporta mais do que um padrão de utilização (workflow)
• É o standard na industria, suportado por todas grandes empresas e pela comunidade OSS
(github.com, gitlab.com, bitbucket.com)
Criar repositório git
• Não precisamos de nenhum servidor! Podemos criar um
repositório directamente a partir da linha de comandos:
% git init
• Mas também podemos criar o repositório online (ex.
github.com) e clonar o repositório para o nosso computador.
% git clone git@github.com:dgomes/introducao_ao_git.git
Acrescentar um
ficheiro
% git add nome_do_ficheiro
% git commit –m “mensagem”
• Ficheiro reside agora no nosso repositório local
• Podemos igualmente apagar ou mover um ficheiro:
% git rm nome_do_ficheiro
% git mv nome_do_ficheiro
Sincronizar com
servidor remoto
% git remote add origin git@github.com:dgomes/introducao_ao_git.git
% git push -u origin master
• O repositório “central” é normalmente apelidado de origin
• Podemos acrescentar mais do que um repositório remote
• Antes de um push num repositório partilhado é importante sincronizar o
repositório local e resolver qualquer conflito:
% git pull
Conhecer o estado da working tree
% git status
• Informa que ficheiros precisam
ser adicionados (porque foram
alterados)
• Informa que ficheiros existem
no computador mas que não
pertencem ao repositório
% git log
• Informa de todas as
alterações feitas até ao
momento (HEAD)
• Informa de commits anteriores
e qual o seu identificador
(SHA1)
Conhecer o que foi feito
% git diff commit_id
• Mostra-nos as diferenças
entre a HEAD e o commit_id
% git show commit_id
• Mostra-nos o que foi
submetido em commit_id
Branching
• % git checkout –b future-plans
• Inicia um novo branch e
coloca-nos no mesmo
• % git branch
• Lista os branches e informa do
actual
Merging
% git merge future-plans
• Como não existem histórias paralelas o merge é apenas a
actualização do HEAD de master
% git branch -d future-plans
• Para apagar um branch que já foi merged / não interessa
Push
% git push origin master
• Envia as nossas alterações feitas a master para o remote
origin
Undo! Undo!
% git revert commit_id
• Cria um novo commit que desfaz as alterações de commit_id
e aplica ao branch actual
% git reset --hard commit_id
• Desfaz todas alterações até ao commit_id, apaga todas
alterações (sem --hard, as alterações mantêm-se em disco)
Ups! Merge falhou
• Por vezes durante um merge podemos ter conflitos (alterações concorrentes no mesmo pedaço
de código)
% git status
• Saber que ficheiros precisam de ser resolvidos
• Editar os ficheiros e procurar por “<<<< ==== >>>>”
• Escolher qual a versão correcta (do branch actual ou do branch que está a ser merged)
% git add ficheiro
% git commit –m “corrigir conflitos”
• Por favor ajudem! Não sei resolver os conflitos! Deixem-me voltar!
% git merge –abort
• Oh não! Fiz merge e agora isto está tudo mal!
% git reset --hard
GitHub
• Dicas:
• Configurar sempre uma chave SSH
• https://help.github.com/en/github/using-git/which-remote-url-should-i-
use#cloning-with-ssh-urls
• Configurar endereço email correcto (não usar o do computador)
• https://help.github.com/en/github/using-git/setting-your-username-in-git
• Evitar editar ficheiros online (maior propensão para criar conflitos)
Obrigado pela vossa atenção!
Algumas das imagens são retiradas de
https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud

Mais conteúdo relacionado

Mais procurados

Mini aula-sublime-text-git-e-github
Mini aula-sublime-text-git-e-githubMini aula-sublime-text-git-e-github
Mini aula-sublime-text-git-e-githubWilson Mendes
 
Controle de versão com Git e BitBucket
Controle de versão com Git e BitBucketControle de versão com Git e BitBucket
Controle de versão com Git e BitBucketMarcio Barbosa
 
Aula 6 - Curso Git e Github - Webschool
Aula 6 - Curso Git e Github - WebschoolAula 6 - Curso Git e Github - Webschool
Aula 6 - Curso Git e Github - WebschoolBruno Orlandi
 
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
 
Github para colaboradores livres
Github para colaboradores livresGithub para colaboradores livres
Github para colaboradores livresThiago Sciotta
 
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
 
Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET ComputaçãoBruno Orlandi
 
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
 
Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º diaArmando Couto
 
MINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIAMINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIAArmando Couto
 
Workshop git para iniciantes
Workshop git para iniciantesWorkshop git para iniciantes
Workshop git para iniciantesPaula Santana
 

Mais procurados (20)

Mini aula-sublime-text-git-e-github
Mini aula-sublime-text-git-e-githubMini aula-sublime-text-git-e-github
Mini aula-sublime-text-git-e-github
 
Controle de versão com Git e BitBucket
Controle de versão com Git e BitBucketControle de versão com Git e BitBucket
Controle de versão com Git e BitBucket
 
Aula 6 - Curso Git e Github - Webschool
Aula 6 - Curso Git e Github - WebschoolAula 6 - Curso Git e Github - Webschool
Aula 6 - Curso Git e Github - Webschool
 
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
 
Git+github
Git+githubGit+github
Git+github
 
Git do Zero - Campus Party #12
Git do Zero - Campus Party #12Git do Zero - Campus Party #12
Git do Zero - Campus Party #12
 
Git e github
Git e githubGit e github
Git e github
 
Github para colaboradores livres
Github para colaboradores livresGithub para colaboradores livres
Github para colaboradores livres
 
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
 
Git
GitGit
Git
 
Controle de versão com e git
Controle de versão com e gitControle de versão com e git
Controle de versão com e git
 
Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET Computação
 
Git flow na prática
Git flow na práticaGit flow na prática
Git flow na prática
 
Git alem do basico
Git alem do basicoGit alem do basico
Git alem do basico
 
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
 
Mini curso Git - 2º dia
Mini curso Git - 2º diaMini curso Git - 2º dia
Mini curso Git - 2º dia
 
MINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIAMINI CURSO DE GIT NA UECE – 3º DIA
MINI CURSO DE GIT NA UECE – 3º DIA
 
Git conceitos
Git conceitosGit conceitos
Git conceitos
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
 
Workshop git para iniciantes
Workshop git para iniciantesWorkshop git para iniciantes
Workshop git para iniciantes
 

Semelhante a Introdução ao git em

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 - 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
 
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 versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com GitRaphael Cruzeiro
 
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
 
Git - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotadoGit - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotadoWilliam Lima
 
workshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdfworkshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdfAuriceliaRosa
 
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
 
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
 
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
 

Semelhante a Introdução ao git em (20)

Git para quem vem do SVN
Git para quem vem do SVNGit para quem vem do SVN
Git para quem vem do SVN
 
Introdução ao Git
Introdução ao GitIntrodução ao Git
Introdução ao Git
 
Introducao ao Git
Introducao ao GitIntroducao ao Git
Introducao ao Git
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Git 101
Git 101Git 101
Git 101
 
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 - 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
 
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 versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
 
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
 
Git ao GitHub
Git ao GitHubGit ao GitHub
Git ao GitHub
 
Git - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotadoGit - Fluxo do Versionamento adotado
Git - Fluxo do Versionamento adotado
 
workshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdfworkshopgitparainiciantes1-190901224755.pdf
workshopgitparainiciantes1-190901224755.pdf
 
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
 
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
 
Controle de versão e colaboração com Git
Controle de versão e colaboração com GitControle de versão e colaboração com Git
Controle de versão e colaboração com Git
 
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
 
Curso git-0001
Curso git-0001Curso git-0001
Curso git-0001
 
Git & GitHub for beginners
Git & GitHub for beginnersGit & GitHub for beginners
Git & GitHub for beginners
 

Mais de Diogo Gomes

Teaching AI through retro gaming
Teaching AI through retro gamingTeaching AI through retro gaming
Teaching AI through retro gamingDiogo Gomes
 
The Things Network
The Things Network The Things Network
The Things Network Diogo Gomes
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonDiogo Gomes
 
Hack'Aveiro - 1º workshop - Introdução ao Arduino
Hack'Aveiro - 1º workshop - Introdução ao ArduinoHack'Aveiro - 1º workshop - Introdução ao Arduino
Hack'Aveiro - 1º workshop - Introdução ao ArduinoDiogo Gomes
 
IoT - Apps & Services
IoT - Apps & ServicesIoT - Apps & Services
IoT - Apps & ServicesDiogo Gomes
 
Conversas 2.0@sapo.labs - "svn+code.ua"
Conversas 2.0@sapo.labs - "svn+code.ua"Conversas 2.0@sapo.labs - "svn+code.ua"
Conversas 2.0@sapo.labs - "svn+code.ua"Diogo Gomes
 
Open Source &amp; Research
Open Source &amp; ResearchOpen Source &amp; Research
Open Source &amp; ResearchDiogo Gomes
 
Resource Optimizations for Broadcast enabled networks
Resource Optimizations for Broadcast enabled networksResource Optimizations for Broadcast enabled networks
Resource Optimizations for Broadcast enabled networksDiogo Gomes
 

Mais de Diogo Gomes (9)

Teaching AI through retro gaming
Teaching AI through retro gamingTeaching AI through retro gaming
Teaching AI through retro gaming
 
The Things Network
The Things Network The Things Network
The Things Network
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
 
Rest workshop
Rest workshopRest workshop
Rest workshop
 
Hack'Aveiro - 1º workshop - Introdução ao Arduino
Hack'Aveiro - 1º workshop - Introdução ao ArduinoHack'Aveiro - 1º workshop - Introdução ao Arduino
Hack'Aveiro - 1º workshop - Introdução ao Arduino
 
IoT - Apps & Services
IoT - Apps & ServicesIoT - Apps & Services
IoT - Apps & Services
 
Conversas 2.0@sapo.labs - "svn+code.ua"
Conversas 2.0@sapo.labs - "svn+code.ua"Conversas 2.0@sapo.labs - "svn+code.ua"
Conversas 2.0@sapo.labs - "svn+code.ua"
 
Open Source &amp; Research
Open Source &amp; ResearchOpen Source &amp; Research
Open Source &amp; Research
 
Resource Optimizations for Broadcast enabled networks
Resource Optimizations for Broadcast enabled networksResource Optimizations for Broadcast enabled networks
Resource Optimizations for Broadcast enabled networks
 

Introdução ao git em

  • 2. O que é o git ? • Sistema de controlo de versões • Criado em 2005 por Linus Torvalds • Trata-se de um Sistema Distribuído de Controlo de Versões (DVCS) • Não existe um servidor central, todos programadores têm uma cópia de todas as alterações • Possibilita desenvolvimento completamente offline • Seguro através do uso de SHA1 para criptograficamente fazer a rastreabilidade de todas as alterações. • Flexível pois suporta mais do que um padrão de utilização (workflow) • É o standard na industria, suportado por todas grandes empresas e pela comunidade OSS (github.com, gitlab.com, bitbucket.com)
  • 3. Criar repositório git • Não precisamos de nenhum servidor! Podemos criar um repositório directamente a partir da linha de comandos: % git init • Mas também podemos criar o repositório online (ex. github.com) e clonar o repositório para o nosso computador. % git clone git@github.com:dgomes/introducao_ao_git.git
  • 4.
  • 5. Acrescentar um ficheiro % git add nome_do_ficheiro % git commit –m “mensagem” • Ficheiro reside agora no nosso repositório local • Podemos igualmente apagar ou mover um ficheiro: % git rm nome_do_ficheiro % git mv nome_do_ficheiro
  • 6. Sincronizar com servidor remoto % git remote add origin git@github.com:dgomes/introducao_ao_git.git % git push -u origin master • O repositório “central” é normalmente apelidado de origin • Podemos acrescentar mais do que um repositório remote • Antes de um push num repositório partilhado é importante sincronizar o repositório local e resolver qualquer conflito: % git pull
  • 7. Conhecer o estado da working tree % git status • Informa que ficheiros precisam ser adicionados (porque foram alterados) • Informa que ficheiros existem no computador mas que não pertencem ao repositório % git log • Informa de todas as alterações feitas até ao momento (HEAD) • Informa de commits anteriores e qual o seu identificador (SHA1)
  • 8. Conhecer o que foi feito % git diff commit_id • Mostra-nos as diferenças entre a HEAD e o commit_id % git show commit_id • Mostra-nos o que foi submetido em commit_id
  • 9. Branching • % git checkout –b future-plans • Inicia um novo branch e coloca-nos no mesmo • % git branch • Lista os branches e informa do actual
  • 10. Merging % git merge future-plans • Como não existem histórias paralelas o merge é apenas a actualização do HEAD de master % git branch -d future-plans • Para apagar um branch que já foi merged / não interessa
  • 11. Push % git push origin master • Envia as nossas alterações feitas a master para o remote origin
  • 12. Undo! Undo! % git revert commit_id • Cria um novo commit que desfaz as alterações de commit_id e aplica ao branch actual % git reset --hard commit_id • Desfaz todas alterações até ao commit_id, apaga todas alterações (sem --hard, as alterações mantêm-se em disco)
  • 13. Ups! Merge falhou • Por vezes durante um merge podemos ter conflitos (alterações concorrentes no mesmo pedaço de código) % git status • Saber que ficheiros precisam de ser resolvidos • Editar os ficheiros e procurar por “<<<< ==== >>>>” • Escolher qual a versão correcta (do branch actual ou do branch que está a ser merged) % git add ficheiro % git commit –m “corrigir conflitos” • Por favor ajudem! Não sei resolver os conflitos! Deixem-me voltar! % git merge –abort • Oh não! Fiz merge e agora isto está tudo mal! % git reset --hard
  • 14. GitHub • Dicas: • Configurar sempre uma chave SSH • https://help.github.com/en/github/using-git/which-remote-url-should-i- use#cloning-with-ssh-urls • Configurar endereço email correcto (não usar o do computador) • https://help.github.com/en/github/using-git/setting-your-username-in-git • Evitar editar ficheiros online (maior propensão para criar conflitos)
  • 15. Obrigado pela vossa atenção! Algumas das imagens são retiradas de https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud