• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Começando com Git (para usuários de SVN ou CVS)
 

Começando com Git (para usuários de SVN ou CVS)

on

  • 3,900 views

Diferença prática entre o Subversion (SVN) e o Git.

Diferença prática entre o Subversion (SVN) e o Git.
Explicação de Working directory, staging area e HEAD. Bem como Branch, Tag, Rebase e Merge.

Statistics

Views

Total Views
3,900
Views on SlideShare
2,676
Embed Views
1,224

Actions

Likes
1
Downloads
42
Comments
0

9 Embeds 1,224

http://blog.billcode.com.br 917
http://resumotecnico.blogspot.com.br 292
http://resumotecnico.blogspot.com 6
http://163107027604859695_6f9bc868cdef535bf282b2b5d2be9b5da3bb804b.blogspot.com 3
http://www.linkedin.com 2
http://resumotecnico.blogspot.com.es 1
http://resumotecnico.blogspot.ie 1
http://translate.googleusercontent.com 1
https://www.linkedin.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Começando com Git (para usuários de SVN ou CVS) Começando com Git (para usuários de SVN ou CVS) Presentation Transcript

    • Começando com Git(para usuários de SVN ou CVS) Roger Camargo maio/2012
    • Por que trocar o SVN ?
    • Já precisou fazer umZIP do seu projeto ?
    • Já gastou horas para achar um bug ?
    • Estes já são motivos para tentar algo diferente!
    • Outras motivações:- Difícil para voltar em passos anteriores (revision)- Conflito para partes distintas de arquivos- Desenvolvedores não se preocupam em sair do básico (UPDATE, COMMIT e REVERT)- Dependente do servidor
    • Diferenças práticas1 – as três divisões de área2 – branch, HEAD e Tag3 – branches locais4 – rebase e merge
    • 1as três divisões de área
    • SVN Git local repo .svn vs .svn .svndirectory.svn .svn .svn .svn staging area working directory
    • SVN
    • SVN Repositoryurl CopyTrunk Branch Tag
    • SVNRemote svn server checkoutLocal project
    • SVNRemote svn server checkout updateLocal project
    • SVNRemote svn server checkout updateLocal commit project
    • Git Repositoryurl Branch Commit << revision >> sha1 author comment Local Remote working copy
    • GitRemote remote repo local repo git cloneLocal HEAD project staging area INDEX working directory S.O.
    • GitRemote remote repo local repo git clone git pullLocal HEAD project staging area INDEX working directory S.O.
    • GitRemote remote repo local repo git clone git pullLocal HEAD project staging area INDEX git add working directory S.O.
    • GitRemote remote repo local repo git clone git pullLocal HEAD project staging area git commit INDEX git add working directory S.O.
    • GitRemote remote repo local repo git clone git pullLocal git push HEAD project staging area git commit INDEX git add working directory S.O.
    • Git local repo HEAD ~/python/workspace/acpy_pizzaria/pizzaria$ git status # On branch master # Changes to be committed:staging area # (use "git reset HEAD <file>..." to unstage) # # modified: pizzaria/settings.py # modified: pizzaria/templates/base.html # # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: pizzaria/entrega/templates/entrega/hora.html # modified: pizzaria/entrega/templates/entrega/pizza_list.html working # directory # Untracked files: # (use "git add <file>..." to include in what will be committed) # # novo-arquivo1.json # novo-arquivo2.json # git status
    • Git local repo HEAD ~/python/workspace/acpy_pizzaria/pizzaria$ git status # On branch master # Changes to be committed:staging area # (use "git reset HEAD <file>..." to unstage) # # modified: pizzaria/settings.py # modified: pizzaria/templates/base.html # # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: pizzaria/entrega/templates/entrega/hora.html # modified: pizzaria/entrega/templates/entrega/pizza_list.html working # directory # Untracked files: # (use "git add <file>..." to include in what will be committed) # # novo-arquivo1.json # novo-arquivo2.json # git add .
    • Git local repo HEAD ~/python/workspace/acpy_pizzaria/pizzaria$ git status # On branch master # Changes to be committed:staging area # (use "git reset HEAD <file>..." to unstage) # # modified: pizzaria/settings.py # modified: pizzaria/templates/base.html # # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: pizzaria/entrega/templates/entrega/hora.html # modified: pizzaria/entrega/templates/entrega/pizza_list.html working # directory # Untracked files: # (use "git add <file>..." to include in what will be committed) # # novo-arquivo1.json # novo-arquivo2.json # git commit -m “correção do template”
    • 2Branch, HEAD e Tag
    • commits
    • HEAD da branch master
    • TAG HEAD da branch masterregistro de uma situação na linha do tempo
    • HEAD de cada branch HEADHEAD HEAD
    • HEAD HEAD HEADversão 1.1 HEAD HEAD versão 1.0
    • 3branches locais
    • Git branchRemote remote/origin/ master local repo (HEAD) Local branch branch branch master task1 bugfix staging area (INDEX) working directory
    • Gitmerge vs rebase
    • merge d1dc2f 7b5deb branch minha tarefamaster Desenvolvedor cria um branch e faz alguns commits.
    • merge d1dc2f 7b5deb branch minha tarefamaster Desenvolvedor baixa atualizações do repositório (na master)
    • merge d1dc2f 7b5deb branch minha tarefamaster Misturar (merge) do código na master, pode não ser a melhor alternativa!
    • rebase d1dc2f 7b5deb branch minha tarefamaster Desenvolvedor cria um branch e faz alguns commits.
    • rebase d1dc2f 7b5deb branch minha tarefamaster Desenvolvedor baixa atualizações do repositório (na master)
    • rebase temp branch minha tarefamaster Na execução do rebase, os commits do branch são guardados
    • rebase temp branch minha tarefamaster O branch é rebobinado com o conteúdo da master
    • rebase branch minha tarefa d1dc2f 7b5debmaster O conteúdo do branch é adicionado no final
    • rebase branch minha tarefa d1dc2f 7b5deb d1dc2f 7b5debmaster O merge para a master é feito sem problemas
    • Extra
    • Legal!Mas não gosto de SHELL
    • Gosta de IDE ?Eclipse-plugins ?
    • Veja o capítulo 3As ferramentas básicas – Jogos de shell
    • Entenda os comandos do Gitgit checkout {branch| file| tag| commit}git branchgit reset, git revertgit stashgit bisectResumo de comandos git: //bit.ly/JDQPAw http:
    • Git + interfaces gráficas gitk
    • Git + interfaces gráficas diff3
    • utilizando Gitem repositórios SVN git-svn
    • Remote SVN local repo (HEAD)Local Recursos do Git (local) branch branch fazendo commit/update master task1 em repositórios SVN Não impacta os desenvolvedores que staging area (INDEX) preferem continuar utilizando SVN sem o git-svn working directory
    • Referências:http://akitaonrails.com/2010/08/17/screencast-comecando-com-githttp://www.caelum.com.br/curso/online/githttp://git-scm.com/bookhttp://www.vogella.com/articles/Git/article.htmlLinks relacionados:http://www.codeforest.net/git-vs-svnhttp://en.wikipedia.org/wiki/Git_%28software%29http://git.or.cz/course/svn.htmlhttp://www.ibm.com/developerworks/br/linux/library/l-git-subversion-1/http://imasters.com.br/artigo/23356/desenvolvimento/por-que-voce-deveria-mudar-do-subversion-para-git-parte-01AgradecimentosDouglas Mendes
    • Roger Camargo @huogerac github.com/huogerac resumotecnico.blogspot.com