Descomplicando o controle 
de versão com Git 
Humberto Streb
2 
Humberto Streb 
Bel. Sistemas de Informação 
Desenvolvedor Java 
Entusiasta Linux 
Curioso 
github.com/hstreb 
hstreb@g...
3 
Controle de versão 
“É um software com a finalidade de gerenciar 
diferentes versões no desenvolvimento de um 
document...
4 
Projetos pequenos
5 
Projetos grandes
6 
Vantagens 
Histórico de alterações 
Facilidade de reverter alterações 
Facilidade de ramificar o projeto 
Facilidade de...
7 
Git 
“É um sistema de controle de versão 
distribuido gratuito e open source desenhado 
para lidar com tudo, desde pequ...
8 
Git 
Foco em velocidade 
Foco no design simples 
Suporte robusto a desenvolvimento não linear 
(milhares de branches pa...
9 
Empresas que utilizam Git
10 
Configuração 
$ git config --global user.name "Humberto 
Streb" 
$ git config --global user.email 
"hstreb@gmail.com"
11 
Entendendo os estados
12 
Área de trabalho 
É onde são carregados os arquivos vindo de um 
repositório (checkout). Nela estão os arquivos 
vigen...
13 
Área de preparação 
É uma área temporária, que contem as 
informações do próximo commit.
14 
Diretório do Git 
É onde são armazenados as informações sobre 
o último commit.
15 
Mãos na massa
16 
init 
Esse comando irá inciar um repositório local na 
pasta onde foi executado
17 
init 
$ mkdir tutorial-git 
$ cd tutorial-git 
$ git init 
Initialized empty Git repository in .../tutorial-git/. 
git...
18 
status 
Mostra o estado atual do projeto
19 
status 
$ git status 
# On branch master 
# 
# Initial commit 
# 
nothing to commit (create/copy files and use 
"git a...
20 
Criamos a classe App.java
21 
status 
$ git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to in...
22 
add 
Adiciona os arquivos para o índice do git.
23 
add 
$ git add . 
$ git status 
# On branch master 
# 
# Initial commit 
# 
# Changes to be committed: 
# (use "git rm...
24 
commit 
Salva as alterações contidas no índice para o 
repositório do git
25 
commit 
$ git commit -m "Iniciando o projeto" 
[master (root-commit) aab8232] Iniciando o 
projeto 
1 file changed, 7 ...
26 
commit 
$ git commit -m "Iniciando o projeto" 
[master (root-commit) aab8232] Iniciando o 
projeto 
1 file changed, 7 ...
27 
Criando teste com valores 
fixos
28 
commit 
git add . 
$ git commit -m "Teste com valores fixos" 
[master 0dc82d0] Teste com valores fixos 
1 file changed...
29 
log 
Mostra o histórico de commits
30 
log 
$ git log 
commit 0dc82d02b8552dea278a1dfa118d3d722a33f380 
Author: Humberto Streb <hstreb@gmail.com> 
Date: Thu ...
31 
Adicionando leitura do 
teclado
32 
add e commit no mesmo 
comando 
git commit -a -m "Ler do teclado" 
1 file changed, 6 insertions(+), 1 deletion(-)
33 
tag 
Serve como marcação para um determinado 
momento do projeto
34 
tag 
$ git tag v-1 
$ git tag 
v-1
35 
branch 
Esse comando cria uma ramificação do projeto
36 
branch 
$ git branch 
* master 
$ git branch tratarExcecao 
$ git checkout tratarExcecao 
Switched to branch 'tratarEx...
37 
branch 
$ git checkout -b tratarExcecao
38 
Adicionando o tratamento 
de exceções no branch
39 
Adicionando o tratamento 
de exceções no branch 
$ git commit -a -m "Tratamento exceção" 
[tratarExcecao ecf16a9] Trat...
40 
checkout 
É o comando responsável por “atualizar” para 
o branch que deseja ir.
41 
checkout para o master 
$ git checkout master 
Switched to branch 'master'
42 
O arquivo App.java voltou 
para o formato anterior
43 
Adição do método 
processaResposta
44 
Adição do método 
processaResposta 
$ git commit -a -m "Adicção método 
processaResposta" 
[master 4c163d6] Adicção mé...
Corrigindo o último commit 
$ git log 
... 
45 
Adicção método processaResposta 
$ git commit --amend -m "Adição método pr...
46 
dif 
Mostra as diferenças entre o branch atual e o 
destinatário
47 
dif 
$ git checkout tratarExcecao 
Switched to branch 'tratarExcecao'
$ git diff master 
diff --git a/App.java b/App.java 
index 3edc65f..15b4da3 100644 
--- a/App.java 
+++ b/App.java 
@@ -4,...
49 
merge 
Responsável por fazer a concatenação das 
diferenças entre os branches
50 
Fazendo merge com o 
master 
$ git merge master 
Auto-merging App.java 
Merge made by the 'recursive' strategy. 
App.j...
51 
Adicionando o método 
lerInteiro
52 
Adicionando o método 
lerInteiro 
$ git checkout master 
Switched to branch 'master' 
$ git commit -a -m "Adição métod...
53 
Fazendo merge com o 
master (2) 
$ git checkout tratarExcecao 
Switched to branch 'tratarExcecao' 
$ git merge master ...
54
55 
Consertar o método 
lerInteiro
56 
Fazer o merge do branch 
para o master 
$ git commit -a -m "Tratar exceção no método lerInteiro" 
[tratarExcecao c7053...
57 
Colaborando
58 
remote 
É utilizado para adicionar um repositório 
remoto ao projeto
59 
remote 
$ git remote add origin 
git@github.com:hstreb/tutorial-git.git
60 
clone 
É utilizado para “clonar” um repositório.
61 
clone 
$ git clone git@github.com:hstreb/tutorial-git.git 
Cloning into 'projeto'... 
remote: Counting objects: 27, do...
62 
push 
Este comando envia as alterações contidas no 
repositório local para o repositório remoto
63 
push 
$ git push origin master 
Warning: Permanently added the RSA host key for IP address 
'192.30.252.131' to the li...
64 
push branches 
$ git push origin tratarExcecao 
Warning: Permanently added the RSA host key 
for IP address '192.30.25...
65 
pull 
É utilizado para baixar as alterações contidas 
no repositório remoto
66 
pull 
$ git pull origin master 
From github.com:hstreb/tutorial-git 
* branch master -> FETCH_HEAD 
Updating c7053bb.....
67 
stash 
Stash é utilizado para adicionar várias 
alterações em uma pilha, que é armazenada 
localmente
68 
stash Adicionar alterações 
$ git stash 
Saved working directory and index state  
"WIP on master: 049d078 added the i...
69 
stash listar alterações já 
realizadas 
$ git stash list 
stash@{0}: WIP on master: 049d078 added the 
index file 
sta...
70 
stash aplicar alterações 
$ git stash apply 
# On branch master 
# Changes not staged for commit: 
# (use "git add <fi...
71 
stash aplicar e retirar da 
lista as alterações 
$ git stash pop 
# On branch master 
# Changes not staged for commit:...
72 
stash aplicar alterações 
mais antigas 
$ git stash apply@{2} 
# On branch master 
# Changes not staged for commit: 
#...
73 
stash aplicar alterações 
mais antigas 
{0} representa o último stash que você fez; 
{1} representa penúltimo, e assim...
74 
projeto
75 
Links 
http://git-scm.com 
https://github.com/hstreb/tutorial-git
76 
Muito obrigado!
Próximos SlideShares
Carregando em…5
×

Descomplicando o controle de versão com git

492 visualizações

Publicada em

Tutorial de utilização do git, explicando passo a passo como fazer commits, pushes, merges, diffs, criar branchs, tags, adicionar um repositório remoto entre outras features do git.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
492
No SlideShare
0
A partir de incorporações
0
Número de incorporações
7
Ações
Compartilhamentos
0
Downloads
7
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Descomplicando o controle de versão com git

  1. 1. Descomplicando o controle de versão com Git Humberto Streb
  2. 2. 2 Humberto Streb Bel. Sistemas de Informação Desenvolvedor Java Entusiasta Linux Curioso github.com/hstreb hstreb@gmail.com
  3. 3. 3 Controle de versão “É um software com a finalidade de gerenciar diferentes versões no desenvolvimento de um documento qualquer.” [Wikipédia]
  4. 4. 4 Projetos pequenos
  5. 5. 5 Projetos grandes
  6. 6. 6 Vantagens Histórico de alterações Facilidade de reverter alterações Facilidade de ramificar o projeto Facilidade de marcar (tag) dados Backup do código fonte
  7. 7. 7 Git “É um sistema de controle de versão distribuido gratuito e open source desenhado para lidar com tudo, desde pequenos até grandes projetos com rapidez e eficiência.” [git-scm.com]
  8. 8. 8 Git Foco em velocidade Foco no design simples Suporte robusto a desenvolvimento não linear (milhares de branches paralelos) Totalmente distribuído Capaz de lidar eficientemente com grandes projetos como o kernel do Linux
  9. 9. 9 Empresas que utilizam Git
  10. 10. 10 Configuração $ git config --global user.name "Humberto Streb" $ git config --global user.email "hstreb@gmail.com"
  11. 11. 11 Entendendo os estados
  12. 12. 12 Área de trabalho É onde são carregados os arquivos vindo de um repositório (checkout). Nela estão os arquivos vigentes.
  13. 13. 13 Área de preparação É uma área temporária, que contem as informações do próximo commit.
  14. 14. 14 Diretório do Git É onde são armazenados as informações sobre o último commit.
  15. 15. 15 Mãos na massa
  16. 16. 16 init Esse comando irá inciar um repositório local na pasta onde foi executado
  17. 17. 17 init $ mkdir tutorial-git $ cd tutorial-git $ git init Initialized empty Git repository in .../tutorial-git/. git/
  18. 18. 18 status Mostra o estado atual do projeto
  19. 19. 19 status $ git status # On branch master # # Initial commit # nothing to commit (create/copy files and use "git add" to track)
  20. 20. 20 Criamos a classe App.java
  21. 21. 21 status $ git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # App.java nothing added to commit but untracked files present (use "git add" to track)
  22. 22. 22 add Adiciona os arquivos para o índice do git.
  23. 23. 23 add $ git add . $ git status # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: App.java #
  24. 24. 24 commit Salva as alterações contidas no índice para o repositório do git
  25. 25. 25 commit $ git commit -m "Iniciando o projeto" [master (root-commit) aab8232] Iniciando o projeto 1 file changed, 7 insertions(+) create mode 100644 App.java
  26. 26. 26 commit $ git commit -m "Iniciando o projeto" [master (root-commit) aab8232] Iniciando o projeto 1 file changed, 7 insertions(+) create mode 100644 App.java $ git status # On branch master nothing to commit, working directory clean
  27. 27. 27 Criando teste com valores fixos
  28. 28. 28 commit git add . $ git commit -m "Teste com valores fixos" [master 0dc82d0] Teste com valores fixos 1 file changed, 5 insertions(+), 1 deletion(-)
  29. 29. 29 log Mostra o histórico de commits
  30. 30. 30 log $ git log commit 0dc82d02b8552dea278a1dfa118d3d722a33f380 Author: Humberto Streb <hstreb@gmail.com> Date: Thu Sep 12 10:52:29 2013 -0300 Teste com valores fixos commit aab8232b734b7dbd133f07d13afc2fbf642183d1 Author: Humberto Streb <hstreb@gmail.com> Date: Thu Sep 12 10:48:48 2013 -0300 Iniciando o projeto
  31. 31. 31 Adicionando leitura do teclado
  32. 32. 32 add e commit no mesmo comando git commit -a -m "Ler do teclado" 1 file changed, 6 insertions(+), 1 deletion(-)
  33. 33. 33 tag Serve como marcação para um determinado momento do projeto
  34. 34. 34 tag $ git tag v-1 $ git tag v-1
  35. 35. 35 branch Esse comando cria uma ramificação do projeto
  36. 36. 36 branch $ git branch * master $ git branch tratarExcecao $ git checkout tratarExcecao Switched to branch 'tratarExcecao' $ git branch master * tratarExcecao
  37. 37. 37 branch $ git checkout -b tratarExcecao
  38. 38. 38 Adicionando o tratamento de exceções no branch
  39. 39. 39 Adicionando o tratamento de exceções no branch $ git commit -a -m "Tratamento exceção" [tratarExcecao ecf16a9] Tratamento exceção 1 file changed, 9 insertions(+), 3 deletions(-)
  40. 40. 40 checkout É o comando responsável por “atualizar” para o branch que deseja ir.
  41. 41. 41 checkout para o master $ git checkout master Switched to branch 'master'
  42. 42. 42 O arquivo App.java voltou para o formato anterior
  43. 43. 43 Adição do método processaResposta
  44. 44. 44 Adição do método processaResposta $ git commit -a -m "Adicção método processaResposta" [master 4c163d6] Adicção método processaResposta 1 file changed, 4 insertions(+)
  45. 45. Corrigindo o último commit $ git log ... 45 Adicção método processaResposta $ git commit --amend -m "Adição método processaResposta" [master 9deaa21] Adição método processaResposta 1 file changed, 4 insertions(+) $ git log ... Adição método processaResposta
  46. 46. 46 dif Mostra as diferenças entre o branch atual e o destinatário
  47. 47. 47 dif $ git checkout tratarExcecao Switched to branch 'tratarExcecao'
  48. 48. $ git diff master diff --git a/App.java b/App.java index 3edc65f..15b4da3 100644 --- a/App.java +++ b/App.java @@ -4,14 +4,16 @@ public class App { 48 public static void main(String[] args) { Scanner scanner = new Scanner(System.in); - - System.out.println("Digite um numero:"); - int numero = scanner.nextInt(); - processaResultado(numero); - } - - private static void processaResultado(int numero) { + int numero; + try { + System.out.println("Digite um número:"); + numero = scanner.nextInt(); + } catch (Exception e) { + System.out.println("Não foi possível ler o valor digitado! O valor será 0."); + numero = 0; + } + int dobro = numero * numero; System.out.println("O dobro: " + dobro);
  49. 49. 49 merge Responsável por fazer a concatenação das diferenças entre os branches
  50. 50. 50 Fazendo merge com o master $ git merge master Auto-merging App.java Merge made by the 'recursive' strategy. App.java | 4 ++++ 1 file changed, 4 insertions(+)
  51. 51. 51 Adicionando o método lerInteiro
  52. 52. 52 Adicionando o método lerInteiro $ git checkout master Switched to branch 'master' $ git commit -a -m "Adição método lerInteiro" [master e41e17b] Adição método lerInteiro 1 file changed, 9 insertions(+), 4 deletions(-)
  53. 53. 53 Fazendo merge com o master (2) $ git checkout tratarExcecao Switched to branch 'tratarExcecao' $ git merge master Auto-merging App.java CONFLICT (content): Merge conflict in App.java Automatic merge failed; fix conflicts and then commit the result.
  54. 54. 54
  55. 55. 55 Consertar o método lerInteiro
  56. 56. 56 Fazer o merge do branch para o master $ git commit -a -m "Tratar exceção no método lerInteiro" [tratarExcecao c7053bb] Tratar exceção no método lerInteiro $ git checkout master Switched to branch 'master' $ git merge tratarExcecao Updating e41e17b..c7053bb Fast-forward App.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
  57. 57. 57 Colaborando
  58. 58. 58 remote É utilizado para adicionar um repositório remoto ao projeto
  59. 59. 59 remote $ git remote add origin git@github.com:hstreb/tutorial-git.git
  60. 60. 60 clone É utilizado para “clonar” um repositório.
  61. 61. 61 clone $ git clone git@github.com:hstreb/tutorial-git.git Cloning into 'projeto'... remote: Counting objects: 27, done. remote: Compressing objects: 100% (10/10), done. remote: Total 27 (delta 9), reused 24 (delta 9) Receiving objects: 100% (27/27), done. Resolving deltas: 100% (9/9), done.
  62. 62. 62 push Este comando envia as alterações contidas no repositório local para o repositório remoto
  63. 63. 63 push $ git push origin master Warning: Permanently added the RSA host key for IP address '192.30.252.131' to the list of known hosts. Counting objects: 24, done. Delta compression using up to 2 threads. Compressing objects: 100% (16/16), done. Writing objects: 100% (24/24), 2.26 KiB, done. Total 24 (delta 9), reused 0 (delta 0) To git@github.com:hstreb/tutorial-git.git * [new branch] master -> master
  64. 64. 64 push branches $ git push origin tratarExcecao Warning: Permanently added the RSA host key for IP address '192.30.252.130' to the list of known hosts. Total 0 (delta 0), reused 0 (delta 0) To git@github.com:hstreb/tutorial-git.git * [new branch] tratarExcecao -> tratarExcecao
  65. 65. 65 pull É utilizado para baixar as alterações contidas no repositório remoto
  66. 66. 66 pull $ git pull origin master From github.com:hstreb/tutorial-git * branch master -> FETCH_HEAD Updating c7053bb..85cde87 Fast-forward README.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 README.md
  67. 67. 67 stash Stash é utilizado para adicionar várias alterações em uma pilha, que é armazenada localmente
  68. 68. 68 stash Adicionar alterações $ git stash Saved working directory and index state "WIP on master: 049d078 added the index file" HEAD is now at 049d078 added the index file (To restore them type "git stash apply")
  69. 69. 69 stash listar alterações já realizadas $ git stash list stash@{0}: WIP on master: 049d078 added the index file stash@{1}: WIP on master: c264051... Revert "added file_size" stash@{2}: WIP on master: 21d80a5... added number to log
  70. 70. 70 stash aplicar alterações $ git stash apply # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # # modified: App.java #
  71. 71. 71 stash aplicar e retirar da lista as alterações $ git stash pop # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # # modified: App.java #
  72. 72. 72 stash aplicar alterações mais antigas $ git stash apply@{2} # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # # modified: App.java #
  73. 73. 73 stash aplicar alterações mais antigas {0} representa o último stash que você fez; {1} representa penúltimo, e assim por diante. Essa sintaxe também aparece em outros lugares (show, por exemplo).
  74. 74. 74 projeto
  75. 75. 75 Links http://git-scm.com https://github.com/hstreb/tutorial-git
  76. 76. 76 Muito obrigado!

×