SlideShare uma empresa Scribd logo
1 de 49
Baixar para ler offline
Controle de
versionamento com


              Raphael Cruzeiro - 2012
Git?
Git é um software de controle de versionamento criado
por Linus Torvalds para ser utilizado no
desenvolvimento do kernel do Linux. Cada working
directory do Git é um repositório completo, idependente
de acesso a rede ou de um servidor central.
Git?

O grande diferencial do Git é a velocidade e a
               flexibilidade.
Controle de versionamento
         distribuido
Em um sistema de controle de versionamento
distribuido cada desenvolvedor possui uma cópia
completa e independente do repositório em sua
máquina.
Controle de versionamento
         distribuido
Isto não apenas torna so dados mais seguros quanto a
uma eventual perda mas como também facilita em
possibilitar que o desenvolvedor possa trabalhar offline
aproveitado todos os recursos de um controle de
versionamento.
Controle de versionamento
        distribuido
3 estágios
O Git possui 3 estágios principais para os arquivos do
seu projeto: commited, modified e staged. Commited
significa que os dados estão seguros, salvos no seu
banco de dados local. Modified significa que você
modificou o arquivo mas ainda não o comitou. Staged
significa que o arquivo foi marcado para ir no próximo
commit.
3 estágios
Começando a usar
                 Git
Salvando sua identidade:

$ git config --global user.name “Darth Vader”
$ git config --global user.email “vader@theempire.com”
Começando a usar
                 Git
Setando um par de chaves para autenticação:

$ ssh-keygen -t rsa # Cria o par de chaves
$ cat ~/.ssh/id_rsa.pub # Mostra a chave pública
Criando um
                  repositório
Para inicializar um repositório Git basta ir na pasta do
projeto e rodar o seguinte comando:

$ git init
Adicionando
                 arquivos
Para adicionar os arquivos utilizamos o comando add:

$ git add *.c
$ git add README
Adicionando
                 arquivos

Ou para adicionar todos os arquivos:

$ git add .
Ooopss, comitei o
            que não devia
Para remover um arquivo basta:

$ git rm *.pyc
$ git rm imagem.jpg
Ignorando arquivos
Para ignorarmos arquivos especificos podemos utilizar o
arquivo .gitignore:

.DS_Store
env
*.pyc
Commitando os
                 arquivos
Para commitar os arquvios utilizamos o commando
commit:

$ git commit -a -m ‘Initial commit’

A opção -a diz ao git para colocar em stage todos os
arquivos modificados ou deletados (novos arquivos
ainda não trackeados não são afetados).
Melhores mensagens de commit

 Para criar mensagens mais significativas, é
 recomendado que não se use a opção -m no commit.
 Desta forma o git ira abrir o vim para que uma
 mensagem seja digitada:
Melhores mensagens de commit
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: my_source.py
#
~
Vendo o log do repositório
Para ver o log do repositório basta utilizar o commando log:
$ git log
commit 70d6469847e38ac3cb1691513f2c9f7382f03819
Author: Raphael Cruzeiro <raphaelcruzeiro@raphaelcruzeiro.com>
Date: Tue Dec 11 15:26:16 2012 -0200

 A robot must obey the orders given to it by human beings, except where such orders would conflict with the First
Law.

commit 47578edf04262b4958aadf01bc4489958d17d5eb
Author: Raphael Cruzeiro <raphaelcruzeiro@raphaelcruzeiro.com>
Date: Tue Dec 11 15:22:20 2012 -0200

  A robot may not injure a human being or, through inaction, allow a human being to come to harm.
Revertendo
                          mudanças
Para reverter o a working copy para um estado anterior podemos
utilizar o comando checkout: (os primeiros 4 digitos do hash do
commit são o suficiente para identifica-lo)

$ git checkout 4757

Se você lembra como começava a mensagem do commit:

$ git checkout :/"My first b"
Revertendo
                 mudanças
Qualquer mudança após utilizar o checkout para voltar
para uma revisão anterior cria uma especie de universo
paralelo chamado branch. (Falaremos disso mais tarde).

Para voltar ao presente você pode sempre utilizar o
comando:

$ git checkout master
Revertendo
                 mudanças

Caso você queira reverter a um estado anterior e
descartar todo o que veio depois você pode utilizar o
seguinte commando:

$ git reset --hard 4757
Corrigindo o último
               commit
As vezes você faz besteira no seu último commit. Calma,
você não precisa sair fazendo reset. Faça um amend!

$ git commit --amend -a
Tá tudo errado!!
Suponha que você comitou arquivos que não devia, as
mensagens de commit não são apropriadas. O que
fazer?
Tá tudo errado!!

$ git rebase -i HEAD~10

Os últimos 10 commits vão aparecer no editor de texto.
Você pode trocar as mensagens ou apagar os commits
deletando as linhas que os representam.
Tá tudo errado!!

pick 5c6eb73 Arrumei erro de grafía
pick a311a64 Removi a conf local
pick 100834f Adicionei as imagens
Tá tudo errado!!
Substitua o pick com:

edit para marcar um commit para amend
reword para mudar a mensagem
squash para fazer um merge com o commit anterior
fixup para fazer um merge com o commit anterior e
descartar a mensagem so log
Tá tudo errado!!
Se você marcou algum commit com edit, utilize o
seguinte comando para que o git te leve a este commit
para fazer amends:

$ git rebase --continue
Quem foi o vi#$%#?

Para ver quem fez cada mudança em um arquivo:

$ git blame my_source.py
Universos paralelos
Branches

Quando se trabalha em um projeto relativamente
grande é comum que existam funcionalidades sendo
desenvolvidas enquanto outras pessoas trabalham em
ajustes de funcionalidades já desenvolvidas.
Branches
Para que seja possivel conciliar o trabalho dessas duas
equipes utilizamos branches separados.
Branches
Para criar um branch:

$ git checkout -b experimental # Um branch
chamado experimental foi criado.
Branches
Para retornar ao branch master:

$ git checkout master
Multiplayer
Multiplayer

Quando colaboramos em um projeto, geralmente existe
um repositório remoto e cada desenvolvedor trabalha no
seu próprio repositório local (o que chamamos de fork)
Multiplayer

Para fazer o fork de um repositório basta:

$ git clone git@bitbucket.org:inspira_tecnologia/agclick_senai.git
Multiplayer
Para puxarmos do repositório remoto as mudanças
enviadas pelos outros desenvolvedores utilizamos o
seguinte commando:

$ git pull
Multiplayer

Para pegar especificamente as mudanças no branch
master:

$ git pull origin master
Multiplayer

Para enviar os commits do nosso repositório local para o
remoto:

$ git push
Multiplayer

Para listar todos os branches remotos:

$ git branch -r
Práticas de versionamento
Práticas de versionamento

O branch master é estavel. Nenhum desenvolvimento é
feito nele.
Práticas de versionamento


O desenvolvimento ocorre no branch dev.
Práticas de versionamento

Pode-se continuar o desenvolvimento no dev pois o
ambiente de homologação é sincronizado apenas com o
testing.
Práticas de versionamento

Havendo ajustes, deve se mergear o testing no fix e
realizar os ajustes lá. Ao terminar os ajustes o fix deve
ser mergeado no dev e no testing.
Práticas de versionamento


A versão no testing, passando na homologação deve ser
mergeada no master e lá deve ser aplicada uma tag com
uma versão.
Práticas de versionamento


O que estiver no master esta sempre pronto para
produção.
Dúvidas?

Mais conteúdo relacionado

Mais procurados

Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Victor Souza
 
Git e git hub para iniciantes
Git e git hub para iniciantesGit e git hub para iniciantes
Git e git hub para iniciantesMario Ernesto
 
Seis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioSeis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioMarcos Antônio de Souza Silva
 
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
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDevHélio Medeiros
 
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 Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Jonathan Célio
 
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
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errarBruno Calheira
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com GitVagner Santana
 

Mais procurados (20)

Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016Introdução ao Git - Semac 2016
Introdução ao Git - Semac 2016
 
Git+github
Git+githubGit+github
Git+github
 
Git v2
Git v2Git v2
Git v2
 
Git e git hub para iniciantes
Git e git hub para iniciantesGit e git hub para iniciantes
Git e git hub para iniciantes
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
 
Seis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprioSeis passos para colocar um projeto local em um servidor próprio
Seis passos para colocar um projeto local em um servidor próprio
 
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
 
Sendo um GIT master
Sendo um GIT masterSendo um GIT master
Sendo um GIT master
 
Git para quem vem do SVN
Git para quem vem do SVNGit para quem vem do SVN
Git para quem vem do SVN
 
Treinamento git - Papos RBSDev
Treinamento git - Papos RBSDevTreinamento git - Papos RBSDev
Treinamento git - Papos RBSDev
 
Git flow no projeto
Git flow no projetoGit flow no projeto
Git flow no projeto
 
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 Básico
GIT BásicoGIT Básico
GIT Básico
 
Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos Git e Github - Comandos e conceitos básicos
Git e Github - Comandos e conceitos básicos
 
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 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
 
Desmistificando a ferramenta git
Desmistificando a ferramenta gitDesmistificando a ferramenta git
Desmistificando a ferramenta git
 
Use o git e perca o medo de errar
Use o git e perca o medo de errarUse o git e perca o medo de errar
Use o git e perca o medo de errar
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 
Git
GitGit
Git
 

Destaque

Conceitos de segurança em Ruby on Rails
Conceitos de segurança em Ruby on RailsConceitos de segurança em Ruby on Rails
Conceitos de segurança em Ruby on Railsoverduka
 
Introdução ao Git + Workshop
Introdução ao Git + WorkshopIntrodução ao Git + Workshop
Introdução ao Git + Workshopoverduka
 
Colab - Servidor de Integração de Softwares HTTP
Colab - Servidor de Integração de Softwares HTTPColab - Servidor de Integração de Softwares HTTP
Colab - Servidor de Integração de Softwares HTTPSergio Oliveira
 
Controle de versão utilizando git
Controle de versão utilizando gitControle de versão utilizando git
Controle de versão utilizando gitfredmosc
 
Barreiras à entrada de novatos em projetos de software livre - Forum Goiano d...
Barreiras à entrada de novatos em projetos de software livre - Forum Goiano d...Barreiras à entrada de novatos em projetos de software livre - Forum Goiano d...
Barreiras à entrada de novatos em projetos de software livre - Forum Goiano d...Igor Steinmacher
 
Apresentaçao do Grupo de Pesquisa (Eng. Software e Sistemas Colaborativos) UT...
Apresentaçao do Grupo de Pesquisa (Eng. Software e Sistemas Colaborativos) UT...Apresentaçao do Grupo de Pesquisa (Eng. Software e Sistemas Colaborativos) UT...
Apresentaçao do Grupo de Pesquisa (Eng. Software e Sistemas Colaborativos) UT...Igor Steinmacher
 
DevOps - Como remover barreiras para a adoção?
DevOps - Como remover barreiras para a adoção?DevOps - Como remover barreiras para a adoção?
DevOps - Como remover barreiras para a adoção?Mateus Prado
 
DevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na práticaDevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na práticaAri Stopassola Junior
 
Gitlab flow solo (minimo)
Gitlab flow solo (minimo)Gitlab flow solo (minimo)
Gitlab flow solo (minimo)viniciusban
 
Git commits - como, quando e por quê?
Git commits - como, quando e por quê?Git commits - como, quando e por quê?
Git commits - como, quando e por quê?viniciusban
 
Gitlab flow solo (pt-BR)
Gitlab flow solo (pt-BR)Gitlab flow solo (pt-BR)
Gitlab flow solo (pt-BR)viniciusban
 
ICSE 2016 - Overcoming Open Source Project Entry Barriers with a Portal for N...
ICSE 2016 - Overcoming Open Source Project Entry Barriers with a Portal for N...ICSE 2016 - Overcoming Open Source Project Entry Barriers with a Portal for N...
ICSE 2016 - Overcoming Open Source Project Entry Barriers with a Portal for N...Igor Steinmacher
 
Desmistificando um Ambiente de Desenvolvimento WEB com Vagrant
Desmistificando um Ambiente de Desenvolvimento WEB com VagrantDesmistificando um Ambiente de Desenvolvimento WEB com Vagrant
Desmistificando um Ambiente de Desenvolvimento WEB com VagrantLuis Henrique Costa
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVinícius Krolow
 

Destaque (20)

Conceitos de segurança em Ruby on Rails
Conceitos de segurança em Ruby on RailsConceitos de segurança em Ruby on Rails
Conceitos de segurança em Ruby on Rails
 
Cloud Ops
Cloud OpsCloud Ops
Cloud Ops
 
Ti na Stopassola Advocacia
Ti na Stopassola AdvocaciaTi na Stopassola Advocacia
Ti na Stopassola Advocacia
 
Introdução ao Git + Workshop
Introdução ao Git + WorkshopIntrodução ao Git + Workshop
Introdução ao Git + Workshop
 
Colab - Servidor de Integração de Softwares HTTP
Colab - Servidor de Integração de Softwares HTTPColab - Servidor de Integração de Softwares HTTP
Colab - Servidor de Integração de Softwares HTTP
 
Controle de versão utilizando git
Controle de versão utilizando gitControle de versão utilizando git
Controle de versão utilizando git
 
HTTP2
HTTP2HTTP2
HTTP2
 
Barreiras à entrada de novatos em projetos de software livre - Forum Goiano d...
Barreiras à entrada de novatos em projetos de software livre - Forum Goiano d...Barreiras à entrada de novatos em projetos de software livre - Forum Goiano d...
Barreiras à entrada de novatos em projetos de software livre - Forum Goiano d...
 
Apresentaçao do Grupo de Pesquisa (Eng. Software e Sistemas Colaborativos) UT...
Apresentaçao do Grupo de Pesquisa (Eng. Software e Sistemas Colaborativos) UT...Apresentaçao do Grupo de Pesquisa (Eng. Software e Sistemas Colaborativos) UT...
Apresentaçao do Grupo de Pesquisa (Eng. Software e Sistemas Colaborativos) UT...
 
Unix
UnixUnix
Unix
 
DevOps - Como remover barreiras para a adoção?
DevOps - Como remover barreiras para a adoção?DevOps - Como remover barreiras para a adoção?
DevOps - Como remover barreiras para a adoção?
 
Git na pratica
Git na praticaGit na pratica
Git na pratica
 
DevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na práticaDevOps: desenvolvedores e sysadmins cooperando na prática
DevOps: desenvolvedores e sysadmins cooperando na prática
 
Gitlab flow solo (minimo)
Gitlab flow solo (minimo)Gitlab flow solo (minimo)
Gitlab flow solo (minimo)
 
Git commits - como, quando e por quê?
Git commits - como, quando e por quê?Git commits - como, quando e por quê?
Git commits - como, quando e por quê?
 
Gitlab flow solo (pt-BR)
Gitlab flow solo (pt-BR)Gitlab flow solo (pt-BR)
Gitlab flow solo (pt-BR)
 
ICSE 2016 - Overcoming Open Source Project Entry Barriers with a Portal for N...
ICSE 2016 - Overcoming Open Source Project Entry Barriers with a Portal for N...ICSE 2016 - Overcoming Open Source Project Entry Barriers with a Portal for N...
ICSE 2016 - Overcoming Open Source Project Entry Barriers with a Portal for N...
 
Desmistificando um Ambiente de Desenvolvimento WEB com Vagrant
Desmistificando um Ambiente de Desenvolvimento WEB com VagrantDesmistificando um Ambiente de Desenvolvimento WEB com Vagrant
Desmistificando um Ambiente de Desenvolvimento WEB com Vagrant
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
Modern PHP
Modern PHPModern PHP
Modern PHP
 

Semelhante a Controle de versionamento com Git

Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET ComputaçãoBruno Orlandi
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareAldson Diego
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACDanilo Pinotti
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Danilo Pinotti
 
GIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento SemânticoGIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento SemânticoDjanilson Alves
 
Descomplicando o controle de versão com git
Descomplicando o controle de versão com gitDescomplicando o controle de versão com git
Descomplicando o controle de versão com gitHumberto Streb
 
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em pazViajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em pazFlávio Lisboa
 
Git that like a boss: Grupo RBS
Git that like a boss: Grupo RBSGit that like a boss: Grupo RBS
Git that like a boss: Grupo RBSEvandro Eisinger
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao gitDiogo Gomes
 
Intervalo técnico Git/SVN
Intervalo técnico Git/SVNIntervalo técnico Git/SVN
Intervalo técnico Git/SVNLuciano Lima
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteWaldyr Felix
 
Learn about Git - Git Tutorial
Learn about Git - Git TutorialLearn about Git - Git Tutorial
Learn about Git - Git TutorialLucas Brigida
 
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
 

Semelhante a Controle de versionamento com Git (20)

Minicurso GIT PET Computação
Minicurso GIT PET ComputaçãoMinicurso GIT PET Computação
Minicurso GIT PET Computação
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de Software
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
Git Rápido e Fácil
Git Rápido e FácilGit Rápido e Fácil
Git Rápido e Fácil
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Git 101
Git 101Git 101
Git 101
 
Git e github
Git e githubGit e github
Git e github
 
Git ao GitHub
Git ao GitHubGit ao GitHub
Git ao GitHub
 
GIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento SemânticoGIT - Gerenciamento de Projeto e Versionamento Semântico
GIT - Gerenciamento de Projeto e Versionamento Semântico
 
Descomplicando o controle de versão com git
Descomplicando o controle de versão com gitDescomplicando o controle de versão com git
Descomplicando o controle de versão com git
 
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em pazViajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
Viajando no Tempo com GIT: Controle de versão para quem quer dormir em paz
 
Git that like a boss: Grupo RBS
Git that like a boss: Grupo RBSGit that like a boss: Grupo RBS
Git that like a boss: Grupo RBS
 
Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 
Intervalo técnico Git/SVN
Intervalo técnico Git/SVNIntervalo técnico Git/SVN
Intervalo técnico Git/SVN
 
Introdução ao Git
Introdução ao Git   Introdução ao Git
Introdução ao Git
 
Git do Zero - Campus Party #12
Git do Zero - Campus Party #12Git do Zero - Campus Party #12
Git do Zero - Campus Party #12
 
Git - Rápido, seguro, eficiente
Git - Rápido, seguro, eficienteGit - Rápido, seguro, eficiente
Git - Rápido, seguro, eficiente
 
Learn about Git - Git Tutorial
Learn about Git - Git TutorialLearn about Git - Git Tutorial
Learn about Git - Git Tutorial
 
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
GitGit
Git
 

Controle de versionamento com Git

  • 1. Controle de versionamento com Raphael Cruzeiro - 2012
  • 2. Git? Git é um software de controle de versionamento criado por Linus Torvalds para ser utilizado no desenvolvimento do kernel do Linux. Cada working directory do Git é um repositório completo, idependente de acesso a rede ou de um servidor central.
  • 3. Git? O grande diferencial do Git é a velocidade e a flexibilidade.
  • 4. Controle de versionamento distribuido Em um sistema de controle de versionamento distribuido cada desenvolvedor possui uma cópia completa e independente do repositório em sua máquina.
  • 5. Controle de versionamento distribuido Isto não apenas torna so dados mais seguros quanto a uma eventual perda mas como também facilita em possibilitar que o desenvolvedor possa trabalhar offline aproveitado todos os recursos de um controle de versionamento.
  • 7. 3 estágios O Git possui 3 estágios principais para os arquivos do seu projeto: commited, modified e staged. Commited significa que os dados estão seguros, salvos no seu banco de dados local. Modified significa que você modificou o arquivo mas ainda não o comitou. Staged significa que o arquivo foi marcado para ir no próximo commit.
  • 9. Começando a usar Git Salvando sua identidade: $ git config --global user.name “Darth Vader” $ git config --global user.email “vader@theempire.com”
  • 10. Começando a usar Git Setando um par de chaves para autenticação: $ ssh-keygen -t rsa # Cria o par de chaves $ cat ~/.ssh/id_rsa.pub # Mostra a chave pública
  • 11. Criando um repositório Para inicializar um repositório Git basta ir na pasta do projeto e rodar o seguinte comando: $ git init
  • 12. Adicionando arquivos Para adicionar os arquivos utilizamos o comando add: $ git add *.c $ git add README
  • 13. Adicionando arquivos Ou para adicionar todos os arquivos: $ git add .
  • 14. Ooopss, comitei o que não devia Para remover um arquivo basta: $ git rm *.pyc $ git rm imagem.jpg
  • 15. Ignorando arquivos Para ignorarmos arquivos especificos podemos utilizar o arquivo .gitignore: .DS_Store env *.pyc
  • 16. Commitando os arquivos Para commitar os arquvios utilizamos o commando commit: $ git commit -a -m ‘Initial commit’ A opção -a diz ao git para colocar em stage todos os arquivos modificados ou deletados (novos arquivos ainda não trackeados não são afetados).
  • 17. Melhores mensagens de commit Para criar mensagens mais significativas, é recomendado que não se use a opção -m no commit. Desta forma o git ira abrir o vim para que uma mensagem seja digitada:
  • 18. Melhores mensagens de commit # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: my_source.py # ~
  • 19. Vendo o log do repositório Para ver o log do repositório basta utilizar o commando log: $ git log commit 70d6469847e38ac3cb1691513f2c9f7382f03819 Author: Raphael Cruzeiro <raphaelcruzeiro@raphaelcruzeiro.com> Date: Tue Dec 11 15:26:16 2012 -0200 A robot must obey the orders given to it by human beings, except where such orders would conflict with the First Law. commit 47578edf04262b4958aadf01bc4489958d17d5eb Author: Raphael Cruzeiro <raphaelcruzeiro@raphaelcruzeiro.com> Date: Tue Dec 11 15:22:20 2012 -0200 A robot may not injure a human being or, through inaction, allow a human being to come to harm.
  • 20. Revertendo mudanças Para reverter o a working copy para um estado anterior podemos utilizar o comando checkout: (os primeiros 4 digitos do hash do commit são o suficiente para identifica-lo) $ git checkout 4757 Se você lembra como começava a mensagem do commit: $ git checkout :/"My first b"
  • 21. Revertendo mudanças Qualquer mudança após utilizar o checkout para voltar para uma revisão anterior cria uma especie de universo paralelo chamado branch. (Falaremos disso mais tarde). Para voltar ao presente você pode sempre utilizar o comando: $ git checkout master
  • 22. Revertendo mudanças Caso você queira reverter a um estado anterior e descartar todo o que veio depois você pode utilizar o seguinte commando: $ git reset --hard 4757
  • 23. Corrigindo o último commit As vezes você faz besteira no seu último commit. Calma, você não precisa sair fazendo reset. Faça um amend! $ git commit --amend -a
  • 24. Tá tudo errado!! Suponha que você comitou arquivos que não devia, as mensagens de commit não são apropriadas. O que fazer?
  • 25. Tá tudo errado!! $ git rebase -i HEAD~10 Os últimos 10 commits vão aparecer no editor de texto. Você pode trocar as mensagens ou apagar os commits deletando as linhas que os representam.
  • 26. Tá tudo errado!! pick 5c6eb73 Arrumei erro de grafía pick a311a64 Removi a conf local pick 100834f Adicionei as imagens
  • 27. Tá tudo errado!! Substitua o pick com: edit para marcar um commit para amend reword para mudar a mensagem squash para fazer um merge com o commit anterior fixup para fazer um merge com o commit anterior e descartar a mensagem so log
  • 28. Tá tudo errado!! Se você marcou algum commit com edit, utilize o seguinte comando para que o git te leve a este commit para fazer amends: $ git rebase --continue
  • 29. Quem foi o vi#$%#? Para ver quem fez cada mudança em um arquivo: $ git blame my_source.py
  • 31. Branches Quando se trabalha em um projeto relativamente grande é comum que existam funcionalidades sendo desenvolvidas enquanto outras pessoas trabalham em ajustes de funcionalidades já desenvolvidas.
  • 32. Branches Para que seja possivel conciliar o trabalho dessas duas equipes utilizamos branches separados.
  • 33. Branches Para criar um branch: $ git checkout -b experimental # Um branch chamado experimental foi criado.
  • 34. Branches Para retornar ao branch master: $ git checkout master
  • 36. Multiplayer Quando colaboramos em um projeto, geralmente existe um repositório remoto e cada desenvolvedor trabalha no seu próprio repositório local (o que chamamos de fork)
  • 37. Multiplayer Para fazer o fork de um repositório basta: $ git clone git@bitbucket.org:inspira_tecnologia/agclick_senai.git
  • 38. Multiplayer Para puxarmos do repositório remoto as mudanças enviadas pelos outros desenvolvedores utilizamos o seguinte commando: $ git pull
  • 39. Multiplayer Para pegar especificamente as mudanças no branch master: $ git pull origin master
  • 40. Multiplayer Para enviar os commits do nosso repositório local para o remoto: $ git push
  • 41. Multiplayer Para listar todos os branches remotos: $ git branch -r
  • 43. Práticas de versionamento O branch master é estavel. Nenhum desenvolvimento é feito nele.
  • 44. Práticas de versionamento O desenvolvimento ocorre no branch dev.
  • 45. Práticas de versionamento Pode-se continuar o desenvolvimento no dev pois o ambiente de homologação é sincronizado apenas com o testing.
  • 46. Práticas de versionamento Havendo ajustes, deve se mergear o testing no fix e realizar os ajustes lá. Ao terminar os ajustes o fix deve ser mergeado no dev e no testing.
  • 47. Práticas de versionamento A versão no testing, passando na homologação deve ser mergeada no master e lá deve ser aplicada uma tag com uma versão.
  • 48. Práticas de versionamento O que estiver no master esta sempre pronto para produção.