tutorial pratico sobre git

Upload: angelo-silva

Post on 06-Apr-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/2/2019 Tutorial Pratico Sobre Git

    1/11

    TUTORIAL PRTICO SOBRE Git

    por Djalma Oliveira

    Verso 1.1

    "Git um sistema de controle de reviso distribuida, rpido e escalvel" (traduo rpida domanual). Basicamente um sistema de controle de versionamento de arquivos, muito usado por

    desenvolvedores para gerenciar verses do software produzidos seja por um desenvolvedor comotambm por outros participantes do projeto.

    Com ele podemos integrar novas funcionalidades efetuadas por outros desenvolvedores,

    completa, parcial ou no, e tudo isso sendo registrado em um histrico que permite "voltar no

    tempo" para descobrir por exemplo como funcionava uma determinada verso daquele projeto.

    Os participantes do projeto podem enviar suas verses, correes, patchs para o projeto principal

    sem que o projeto principal seja comprometido, permitindo ao dono do projeto a escolha, teste eincluso dessas alteraes no projeto principal se desejar.

    O Git foi desenvolvido inicialmente por Linus Torvalds mediante uma necessidade de ter um

    software robusto para controle de verso do kernel linux.

    Outras informaes sobre o assunto pode ser acessado atravs desses links:

    Projeto : http://git.or.cz/Vdeo do Linus falando sobre o Git: http://www.youtube.com/watch?v=4XpnKHJAok8

    Manual do usurio: http://www.kernel.org/pub/software/scm/git/docs/user-manual.html

    Aqui iniciaremos um rpido e prtico tutorial sobre o Git, nada muito profundo, mas bastante tilpara aqueles que queiram entender um pouco sobre Git.

    TERMOS ANTES DE COMEAR

    Repositrio: Local onde fica armazenado os arquivos do projeto, verses e histricos, local ondeos desenvolvedores podem submeter as alteraes para o projeto.

    Commit: Conjunto de alteraes realizadas durante o desenvolvimento, normalmente essasalteraes so implementaes especficas, seja uma correo, nova verso entre outros. Veja um

    commit como um ponto histrico no desenvolvimento do projeto, esses pontos podem serrecuperados quando necessrio.

    http://git.or.cz/http://www.kernel.org/pub/software/scm/git/docs/user-manual.htmlhttp://www.kernel.org/pub/software/scm/git/docs/user-manual.htmlhttp://git.or.cz/
  • 8/2/2019 Tutorial Pratico Sobre Git

    2/11

    INICIANDO UM REPOSITRIO LOCAL

    Criaremos uma pasta para nosso repositrio:

    mkdir meuprojeto

    cd meuprojeto

    Dentro da pasta iniciaremos um repositrio Git:

    git init

    Perceba que todos os arquivos dentro da pasta (meuprojeto) fazem parte do repositrio, ou seja oseu projeto.

    Configuramos agora as informaes sobre o desenvolvedor (voc), usado para identificar odesenvolvedor em cada commit realizado:

    git config user.name "Djalma Oliveira"git config user.email [email protected]

    Perceba que foi criado uma pasta '.git', aonde todas as informaes e histricos dos arquivos

    ficam armazenados e onde acontece a 'mgica'.

    Criamos dois arquivos (vazios) para o projeto.

    touch arq1.txt

    touch arq2.txt

    Agora informamos ao Git que todos os arquivos devem ser incluidos ao prximo commit:

    git add .

    Mas se desejar tambm pode adicionar somente arquivos especficos, basta informar o seucaminho:

    mailto:[email protected]:[email protected]
  • 8/2/2019 Tutorial Pratico Sobre Git

    3/11

    git add arq2.txt

    O Git inteligente o suficiente para detectar se houve alguma alterao nos arquivos que foramindicados para o commit(git add), assim ele no realiza commits sem que pelo menos um arquivo

    tenha sido alterado, exceto o primeiro commit.

    Agora realizamos o commit:

    git commit -a -m "Meu primeiro commit"

    * o parmetro -a informa que deve adicionar todos os arquivos alterados ao commit;

    * o parmetro -m "texto" adiciona uma mensagem informativa para o commit;

    Resumindo, para realizar commits seguimos 3 passos:

    1. Efetuar modificaes em algum arquivo;2. Informar ao Git quais arquivos devem ser adicionados ao prximo commit (git add);3. Efetuar o commit (git commit) propriamente dito baseado nos arquivo do passo 2.

    No Git todo commit, exceto o primeiro, descendente (filho) de um outro commit, ento vocpode verificar diferenas entre commits caso queira.

    Aps eleger (git add) quais arquivos iro para o prximo commit, voc pode ver quais alteraes

    foram realizadas desde o ltimo commit, usando:

    git diff cached

    Essas informaes sobre alteraes desde o ltimo commit ficam armazenadas em uma estrutura

    do Git chamada de 'index', ou seja, todas as vezes que voc adicionar(git add) arquivos para oprximo commit essas diferenas ficam armazenadas nessa estrutura at o momento em que de

    fato seja realizado o commit(git commit).

  • 8/2/2019 Tutorial Pratico Sobre Git

    4/11

    Listando commits realizados:

    git log

    Mostrando os arquivos alterados desde o ltimo commit:

    git status

    Mostra as alteraes realizadas no ltimo commit:

    git show

    BRANCHS

    Uma branch uma linha de desenvolvimento do projeto. Voc pode ter vrios branchs em seu

    repositrio, cada branch representando uma verso especfica de seu projeto, por exemplo. Vejaum branch como um fork ('cpia') do projeto que pode seguir sua prpria linha de

    desenvolvimento.

    Todo novo repositrio Git (aps o primeiro commit) possue um branch chamado por padromaster. Por exemplo podemos reprensentar nossos branchs da seguinte forma:

    master => projeto principal e a ltima verso em produo.

    working => branch no qual voc est trabalhando atualmente;

    versao-1.0 => uma das vrias verses disponveis de seu projeto.

    versao-1.1 => outra verso...

    teste => alguma verso para testes

    MANIPULAO DE BRANCHS LOCAIS

  • 8/2/2019 Tutorial Pratico Sobre Git

    5/11

    Listando os branchs locais:

    git branch

    * masterteste

    working

    Perceba que o branch que possui um '*' na frente representa o branch corrente.

    Criamos um novo branch 'working' baseado no branch corrente, mantendo-se no branch

    atual(master):

    git branch working

    Criando um novo branch 'teste' baseado em um outro branch 'working' que no o corrente,

    ainda mantendo-se no branch atual:

    git branch teste working

    Outra forma de criar um branch e ao mesmo tempo tornar o novo como corrente usando:

    git checkout -b teste working

    At este ponto devemos ter as seguintes branchs:

    * masterteste

    working

    Mudando para o branch working:

  • 8/2/2019 Tutorial Pratico Sobre Git

    6/11

    git checkout working

    Agora ficar assim:

    masterteste

    *working

    Apagando um branch:

    git branch -D teste

    Lembrete: voc no pode apagar o branch corrente, alterne para um outro ento execute

    novamente o comando.

    MAIS SOBRE OS BRANCHS

    At aqui voc j deve ter percebido que no foi necessrio sair da pasta do projeto, na realidade a

    cada mudana de branch (git checkout) os arquivos contidos na pasta do projeto so modificadospara refletir exatamente as verses de cada branch, sendo assim o seu projeto sempre vai estar

    localizado naquela pasta, pois o Git se encarrega de gerenciar as informaes relativos a cadabranch corrente.

    INCORPORANDO (merge) NOVAS MODIFICAES AO PROJETO

    Uma das funcionalidades mais interessantes do Git a capacidade de incorporar as alteraesrealizada por programadores ao projeto. Essa 'juno' se d somente entre branchs e chamada

    de merge. Por exemplo, digamos que o arquivo arq2.txt no branch working foi alterado:

    git checkout working # mudando para o branch working

    echo "opa" > arq2.txt # alterao propriamente dita

    git add . # marca os arquivos para o prximo commit

    git commit -a -m "alterando arq2.txt" # commit

  • 8/2/2019 Tutorial Pratico Sobre Git

    7/11

    Agora a idia adicionar as alteraes realizadas no branch working para o branch master(lembre-se que o branch working um fork do master!?).

    Mudamos para o branch que receber as alteraes:

    git checkout master

    Realizamos agora o merge das alteraes do branch working para o corrente (master):

    git merge working

    Aps o comando acima ser mostrado um resumo do que foi realizado:

    Updating 751bee8..625fa43

    Fast forward

    arq2.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)

    Confirmando a alterao no arquivo:

    cat arq2.txt

    Peceba que neste momento toda e qualquer alterao realizada no ltimo commit do branchworking agora est refletida do branch master, inclusive o commit realizado na branch working,

    que agora est na branch master.

    Verifique o ltimo commit:

  • 8/2/2019 Tutorial Pratico Sobre Git

    8/11

    git log

    COMPLICANDO MAIS

    Perceba que antes de efetuarmos o merge, somente a branch working possuia alteraes, a masterno, mas e se a branch master fosse alterada antes de dar-mos um merge a branch working?

    Essa situao bastante comum em projetos grandes que alteraes so adicinadasfrequentemente ao projeto principal, no refletindo mais a verso atual do working.

    Lembrando que todo branch possui um branch pai que a sua base a partir de ento.

    Nessa situao a melhor forma de realizar o merge seria realizar um 'rebase', ou seja, pegar o

    ultimo commit do master, que a base do working (por isso o nome rebase), trazer para oworking e aplicar todos os seus commits(na mesma ordem de criao) nele, agora sim a sua

    verso do working estar sincronizada com a ltima verso do master mais os seus commits.

    Realizar um merge nessa situao pode at funcionar(o Git inteligente em algumas situaes),

    mas no recomendado pois isso poderia causar conflitos que seriam mais trabalhosos deresolver do que se efetuasse um 'rebase'.

    Ento antes de aplicar-mos um merge ao master, faremos um rebase a branch working antes para

    refletir a ltima verso do master:

    git checkout working

    git rebase master

    Agora podemos aplicar um merge ao master:

    git checkout master

    git merge working

  • 8/2/2019 Tutorial Pratico Sobre Git

    9/11

    REPOSITRIOS REMOTOS

    A idia a mesma de um repositrio local, mas os remotos so hospedados em servidores na

    internet ou outra mquina que no a sua (mas pode ser a sua tambm).Para trabalharmos com repositrios remotos usamos alguns comandos extras alm dos j

    estudados.

    Para criar um clone (cpia de todo o projeto, incluindo todos commits) do projeto podemos usarum dos seguintes comandos (dependendo a configurao do servidor):

    git clone git://sitehospedado.com.br/projeto

    ou

    git clone http://sitehospedado.com.br/projeto

    Logo aps, voc ver que ser criado um diretrio com o nome do projeto, e dentro a cpia(clone) de todo o projeto.

    Veja o repositrio remotos disponvel agora:

    cd projetogit branch r

    origin/HEAD

    origin/masterorigin/working

    Perceba que a palavra origin o nome padro (mas voc pode criar um com nome diferentedesse se quiser) para repositrios remotos, representando os branchs que existem no projeto, mas

    que so de origem remotas para voc agora.

    Veja que voc deve criar um branch local baseado em algum branch remoto antes de comear aefetuar suas alteraes.

    http://sitehospedado.com.br/projetohttp://sitehospedado.com.br/projeto
  • 8/2/2019 Tutorial Pratico Sobre Git

    10/11

    git checkout b working origin/working

    Agora digamos que voc efetuou vrias alteraes neste repositrio e durante esse tempo oprojeto principal tambm foi alterado no correspondendo mais a base que voc possui agora e

    ento deseja sincronizar com a ltima verso disponvel do projeto.

    Primeiramente recuperamos a verso recente do projeto:

    git fetch

    Agora efetua o merge com o branch atual:

    git merge origin/master

    Uma outra forma de realizar poderia ser assim:

    git pull origin master

    Ou at mesmo:

    git pull

    Neste ltimo caso considerando que voc tem um branch master ele far o merge

    automaticamente.

    SINCRONIZANDO SUAS ALTERAES COM O REPOSITRIO REMOTO

    Aps efetuar suas modificaes no branch, voc pode envi-lo para o servidor remoto atravs

    deste simples comando:

  • 8/2/2019 Tutorial Pratico Sobre Git

    11/11

    git push

    INFORMAES FINAIS

    Bom, finalizo por aqui mas existem ainda muitos comandos sobre o Git que podem ser

    abordados em verses futuras deste manual, ento aguardem atualizaes.

    Espero ter abordado de forma clara, algumas caractersticas do Git e comentem se encontraremalgum erro, pois algumas partes foram traduzidos(minha verso) do manual do usurio.