Git para iniciantes
Mauro... quem?
Mauro George 
http://maurogeorge.github.com 
http://www.aprenderphp.com.br 
@maurogeorge
Sistemas de controle de versão 
VCS (Version control systems)
Pra que?
Pra que? 
Gerenciar diferentes versões de um arquivo
Pra que? 
Guardar histórico de alterações de um arquivo
Pra que? 
Saber quem fez e o porquê de cada alteração
Vantagens
Vantagens 
Backup automático
Vantagens 
Controle do histórico
Vantagens 
Trabalho em equipe
Vantagens 
Marcação e resgate de versões estáveis
Vantagens 
Ramificação do projeto
Diferentes modelos
Centralizado
Centralizado 
Necessita de um servidor central
Centralizado 
O checkout é uma cópia da estrutura dos arquivos do 
repositório
Centralizado 
Somente usuários autorizados podem fazer commits
Centralizado
Distribuído
Distribuído 
Cada cópia é um repositório com o histórico completo
Distribuído 
Não necessita de acesso a rede ou um servidor central
Distribuído 
Commits podem ser feitos offline
Distribuído 
Commits podem ser facilmente transferidos entre 
repositórios
Distribuído
Distribuído
Pesquisa
Pesquisa 
Utiliza: 
Nenhum 
Subversion 
Mercurial 
Git 
Outro
Git
Git 
Open source
Git 
Desenvolvido originalmente por Linus Torvalds, com o 
objetivo de...
Git 
.. manter o Kernel do Linux
Git 
“focado em velocidade, efetividade e usabilidade do 
mundo real em grandes projetos”
Instalação
Instalação Mac 
DMG 
http://code.google.com/p/git-osx-installer/downloads/list?can=3 
Homebrew (mxcl.github.com/homebrew) ...
Instalação Linux 
apt-get 
$ sudo apt-get install git-core git-gui git-doc
Instalação Windows 
msysgit 
http://code.google.com/p/msysgit/downloads/list 
* Use Git Bash Only 
** Checkout Windows-sty...
GUIs
GUIs Gitk para todas as 
plataformas
GUIs GitX (L) para Mac 
http://gitx.laullon.com/ *GitX -> Enable Terminal Usage
GUIs Gitg para Linux 
Gerenciador de pacotes
GUIs tortoisegit para Windows 
http://code.google.com/p/tortoisegit/
Primeiros passos
Primeiros passos 
Configuração 
$ git config --global user.name "Mauro George" 
$ git config --global user.email "maurogot...
Primeiros passos 
Criando nosso projeto 
$ mkdir project 
$ cd project 
$ touch hello_world.php
Primeiros passos 
Criando um repositório 
$ git init
Primeiros passos 
Criando um repositório 
$ git init 
Output: 
Initialized empty Git repository in /path/to/my/project/.gi...
Primeiros passos 
Primeiro commit 
$ git add . 
$ git commit -m "first commit"
Primeiros passos 
Primeiro commit 
$ git add . 
$ git commit -m "first commit" 
Output: 
[master (root-commit) bf3bd62] fi...
Primeiros passos 
Primeiro commit 
$ git status
Primeiros passos 
Primeiro commit 
$ git status 
Output: 
# On branch master 
nothing to commit (working directory clean)
Fluxo básico
Fluxo básico 
Estado dos arquivos 
Untracked 
Modified 
Staged 
Commited
Fluxo básico 
Estado dos arquivos Untracked 
Arquivos que o git não conhece
Fluxo básico 
Estado dos arquivos Untracked 
$ touch Readme 
$ git status
Fluxo básico 
Estado dos arquivos Untracked 
$ touch Readme 
$ git status 
Output: 
# On branch master 
# Untracked files:...
Fluxo básico 
Estado dos arquivos Modified 
Arquivos que o git já conhece e que foram alterados
Fluxo básico 
Estado dos arquivos Modified 
$ vim hello_world.php 
<?php 
echo 'Hello world'; 
?>
Fluxo básico 
Estado dos arquivos Modified 
$ git status
Fluxo básico 
Estado dos arquivos Modified 
Output: 
# On branch master 
# Changes not staged for commit: 
# (use "git add...
Fluxo básico 
Estado dos arquivos Staged 
Arquivos que serão enviados para o repositório
Fluxo básico 
Estado dos arquivos Staged 
$ git add hello_world.php 
$ git status
Fluxo básico 
Estado dos arquivos Staged 
$ git add hello_world.php 
$ git status 
Output: 
# On branch master 
# Changes ...
Fluxo básico 
Estado dos arquivos Commited 
Arquivos que já estão no repositório git
Fluxo básico 
Estado dos arquivos Commited 
$ git commit -m "showing hello world"
Fluxo básico 
Estado dos arquivos Commited 
$ git commit -m "showing hello world" 
Output: 
[master 83d672c] showing hello...
Fluxo básico 
Estado dos arquivos Commited 
$ git status
Fluxo básico 
Estado dos arquivos Commited 
$ git status 
Output: 
# On branch master 
# Untracked files: 
# (use "git add...
Dica 
Colorindo o output 
$ git config --global color.ui true
Fluxo básico 
Resumo 
Editar os arquivos Vim / emacs / textmate / etc 
Colocar os arquivos em staged git add nome do arqui...
Dica 
Sempre leia as mensagens do Git 
Output: 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <fi...
Comandos
Comandos 
git diff 
Visualiza o que foi modificado
Comandos 
git diff 
$ vim hello_world.php 
<?php 
echo 'Hello world, no PHP HackDay'; 
?>
Comandos 
git diff 
$ git diff
Comandos 
git diff 
$ git diff 
Output: 
diff --git a/hello_world.php b/hello_world.php 
index fe71dc6..04beafa 100644 
--...
Comandos 
git diff --word-diff 
Visualiza o que foi modificado, diferenciando por palavras
Comandos 
git diff --word-diff 
$ git diff --word-diff
Comandos 
git diff --word-diff 
$ git diff --word-diff 
Output: 
diff --git a/hello_world.php b/hello_world.php 
index fe7...
Comandos 
git diff --cached 
Visualiza o que foi modificado e está staged
Comandos 
git diff --cached 
$ git add hello_world.php 
$ git status
Comandos 
git diff --cached 
$ git add hello_world.php 
$ git status 
Output: 
# On branch master 
# Changes to be committ...
Comandos 
git diff --cached 
$ git diff
Comandos 
git diff --cached 
$ git diff 
Output:
Comandos 
git diff --cached 
$ git diff --cached
Comandos 
git diff --cached 
$ git diff --cached 
Output: 
diff --git a/hello_world.php b/hello_world.php 
index fe71dc6.....
Comandos 
Commitando nossas alterações para continuarmos... 
$ git commit -m "change hello world message"
Comandos 
git commit -am 
Envia de modified para commited diretamente
Comandos 
git commit -am 
$ vim hello_world.php 
<?php 
echo 'Hello world, no PHP HackDay em 03/03/2012'; 
?>
Comandos 
git commit -am 
$ git status
Comandos 
git commit -am 
$ git status 
Output: 
# On branch master 
# Changes not staged for commit: 
# (use "git add <fi...
Comandos 
git commit -am 
$ git commit -am "added date on hello world"
Comandos 
git commit -am 
$ git commit -am "added date on hello world" 
Output: 
[master 518bad1] added date on hello worl...
Comandos 
git commit -am 
$ git status
Comandos 
git commit -am 
$ git status 
Output: 
# On branch master 
# Untracked files: 
# (use "git add <file>..." to inc...
Dica 
Se o git não conhece ele não mexe
Comandos 
Editando e commitando o Readme para continuarmos... 
$ vim Readme 
$ git add Readme 
$ git commit -m "added read...
Comandos 
git log 
Exibe o histórico com infomações dos commits
Comandos 
git log 
$ git log
Comandos 
git log 
$ git log 
Output: 
commit a6aa0cb4d832a3a7c3a26001d89d8698e73790bb 
Author: Mauro George <maurogot@gma...
Comandos 
git log --oneline 
Exibe o log em apenas uma linha
Comandos 
git log --oneline 
$ git log --oneline
Comandos 
git log --oneline 
$ git log --oneline 
Output: 
53bc92d Revert "added date on hello world" 
a6aa0cb added readm...
Voltando no tempo
Voltando no tempo 
git checkout <hash> 
Volta para o commit informado em <hash>
Voltando no tempo 
git checkout <hash> 
$ git checkout bf3bd62
Voltando no tempo 
git checkout <hash> Hash do primeiro commit 
$ git checkout bf3bd62
Voltando no tempo 
git checkout <hash> Hash do primeiro commit 
$ git checkout bf3bd62 
Output: 
Note: checking out 'bf3bd...
Voltando no tempo 
git checkout <hash> 
$ ls 
hello_world.php 
$ cat hello_world.php
Voltando no tempo 
git checkout <hash> De volta para o futuro 
$ git checkout master
Voltando no tempo 
git checkout <hash> De volta para o futuro 
$ git checkout master 
Output: 
Previous HEAD position was ...
Voltando no tempo 
git checkout <hash> De volta para o futuro 
$ ls 
Readme hello_world.php 
$ cat hello_world.php 
<?php ...
Voltando no tempo 
git revert <hash> 
Reverte um commit criando um novo
Voltando no tempo 
git revert <hash> 
$ git revert 518bad1
Voltando no tempo 
git revert <hash> 
$ git revert 518bad1 
Hash do 
quarto commit. 
Em que foi adicionada a data
Voltando no tempo 
git revert <hash> 
$ git revert 518bad1 
Hash do 
quarto commit. 
Em que foi adicionada a data 
Output:...
Voltando no tempo 
git revert <hash> 
$ git revert 518bad1 
Hash do 
quarto commit. 
Em que foi adicionada a data 
Output:...
Voltando no tempo 
git revert <hash> 
$ cat hello_world.php 
<?php 
echo 'Hello world, no PHP HackDay'; 
?>
Dica 
Commits pequenos e constantes 
Boa mensagem de commit 
Created model of User 
Má mensagem de commit 
Created model o...
Voltando no tempo 
git checkout <hash> <arquivo> 
Recupera o arquivo do commit informado
Voltando no tempo 
git checkout <hash> <arquivo> 
$ git checkout 83d672c hello_world.php
Voltando no tempo 
git checkout <hash> <arquivo> 
$ git checkout 83d672c hello_world.php 
Hash do segundo commit. 
Em que ...
Voltando no tempo 
git checkout <hash> <arquivo> 
$ git status
Voltando no tempo 
git checkout <hash> <arquivo> 
$ git status 
Output: 
# On branch master 
# Changes to be committed: 
#...
Voltando no tempo 
git checkout <hash> <arquivo> 
$ git diff --cached
Voltando no tempo 
git checkout <hash> <arquivo> 
$ git diff --cached 
Output: 
diff --git a/hello_world.php b/hello_world...
Perguntas?
Obrigado! 
@maurogeorge 
maurogeorge.github.com
Upcoming SlideShare
Loading in …5
×

Git para iniciantes @ PHP HackDay

4,956 views

Published on

Apresentada em 03/03/12 no PHP HackDay. Na palestra você verá uma introdução aos sistemas de controle de versão, passando pelos modelos centralizado e distribuído. Um pouco da história do git, a instalação e GUIs para Mac, Linux e Windows. As configurações e o fluxo básico para o dia a dia. Além de alguns comandos e dicas que ajudarão no dia a dia com o git, inclusive para quem já usa o git no seu dia a dia

0 Comments
18 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,956
On SlideShare
0
From Embeds
0
Number of Embeds
244
Actions
Shares
0
Downloads
87
Comments
0
Likes
18
Embeds 0
No embeds

No notes for slide
  • \n
  • * Trabalho com web a aproximadamente 4 anos\n* Front end\n* PHP e MySQL\n* Ruby/Rails PostgreSQL\n
  • * Aprender PHP est&amp;#xE1; pausado\n* maurogeorge.github.com blog em que falo de outras coisas al&amp;#xE9;m de PHP\n\n
  • * Sistema que guarda altera&amp;#xE7;&amp;#xF5;es dos arquivos com o passar do tempo\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • * pode voltar para qualquer commit quando quiser\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • * de uma revis&amp;#xE3;o especifica, no distribu&amp;#xED;do temos o reposit&amp;#xF3;rio todo\n
  • dificultando a contribui&amp;#xE7;&amp;#xE3;o nos projetos open source\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • - Instalar os 3 pacotes\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Modified ou unstaged, usaremos nos exemplos modified\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • - Output no pr&amp;#xF3;ximo slide pois &amp;#xE9; muito grande\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Faltou bastante coisa legal como:\n- Branches\n- trabalho em equipe\n- ignorando arquivos\n- etc...\n
  • \n
  • \n
  • Git para iniciantes @ PHP HackDay

    1. 1. Git para iniciantes
    2. 2. Mauro... quem?
    3. 3. Mauro George http://maurogeorge.github.com http://www.aprenderphp.com.br @maurogeorge
    4. 4. Sistemas de controle de versão VCS (Version control systems)
    5. 5. Pra que?
    6. 6. Pra que? Gerenciar diferentes versões de um arquivo
    7. 7. Pra que? Guardar histórico de alterações de um arquivo
    8. 8. Pra que? Saber quem fez e o porquê de cada alteração
    9. 9. Vantagens
    10. 10. Vantagens Backup automático
    11. 11. Vantagens Controle do histórico
    12. 12. Vantagens Trabalho em equipe
    13. 13. Vantagens Marcação e resgate de versões estáveis
    14. 14. Vantagens Ramificação do projeto
    15. 15. Diferentes modelos
    16. 16. Centralizado
    17. 17. Centralizado Necessita de um servidor central
    18. 18. Centralizado O checkout é uma cópia da estrutura dos arquivos do repositório
    19. 19. Centralizado Somente usuários autorizados podem fazer commits
    20. 20. Centralizado
    21. 21. Distribuído
    22. 22. Distribuído Cada cópia é um repositório com o histórico completo
    23. 23. Distribuído Não necessita de acesso a rede ou um servidor central
    24. 24. Distribuído Commits podem ser feitos offline
    25. 25. Distribuído Commits podem ser facilmente transferidos entre repositórios
    26. 26. Distribuído
    27. 27. Distribuído
    28. 28. Pesquisa
    29. 29. Pesquisa Utiliza: Nenhum Subversion Mercurial Git Outro
    30. 30. Git
    31. 31. Git Open source
    32. 32. Git Desenvolvido originalmente por Linus Torvalds, com o objetivo de...
    33. 33. Git .. manter o Kernel do Linux
    34. 34. Git “focado em velocidade, efetividade e usabilidade do mundo real em grandes projetos”
    35. 35. Instalação
    36. 36. Instalação Mac DMG http://code.google.com/p/git-osx-installer/downloads/list?can=3 Homebrew (mxcl.github.com/homebrew) $ brew install git
    37. 37. Instalação Linux apt-get $ sudo apt-get install git-core git-gui git-doc
    38. 38. Instalação Windows msysgit http://code.google.com/p/msysgit/downloads/list * Use Git Bash Only ** Checkout Windows-style, commit Unix-style line endings
    39. 39. GUIs
    40. 40. GUIs Gitk para todas as plataformas
    41. 41. GUIs GitX (L) para Mac http://gitx.laullon.com/ *GitX -> Enable Terminal Usage
    42. 42. GUIs Gitg para Linux Gerenciador de pacotes
    43. 43. GUIs tortoisegit para Windows http://code.google.com/p/tortoisegit/
    44. 44. Primeiros passos
    45. 45. Primeiros passos Configuração $ git config --global user.name "Mauro George" $ git config --global user.email "maurogot@gmail.com"
    46. 46. Primeiros passos Criando nosso projeto $ mkdir project $ cd project $ touch hello_world.php
    47. 47. Primeiros passos Criando um repositório $ git init
    48. 48. Primeiros passos Criando um repositório $ git init Output: Initialized empty Git repository in /path/to/my/project/.git/
    49. 49. Primeiros passos Primeiro commit $ git add . $ git commit -m "first commit"
    50. 50. Primeiros passos Primeiro commit $ git add . $ git commit -m "first commit" Output: [master (root-commit) bf3bd62] first commit 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 hello_world.php
    51. 51. Primeiros passos Primeiro commit $ git status
    52. 52. Primeiros passos Primeiro commit $ git status Output: # On branch master nothing to commit (working directory clean)
    53. 53. Fluxo básico
    54. 54. Fluxo básico Estado dos arquivos Untracked Modified Staged Commited
    55. 55. Fluxo básico Estado dos arquivos Untracked Arquivos que o git não conhece
    56. 56. Fluxo básico Estado dos arquivos Untracked $ touch Readme $ git status
    57. 57. Fluxo básico Estado dos arquivos Untracked $ touch Readme $ git status Output: # On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # Readme nothing added to commit but untracked files present (use "git add" to track)
    58. 58. Fluxo básico Estado dos arquivos Modified Arquivos que o git já conhece e que foram alterados
    59. 59. Fluxo básico Estado dos arquivos Modified $ vim hello_world.php <?php echo 'Hello world'; ?>
    60. 60. Fluxo básico Estado dos arquivos Modified $ git status
    61. 61. Fluxo básico Estado dos arquivos Modified Output: # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: hello_world.php # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # Readme no changes added to commit (use "git add" and/or "git commit -a")
    62. 62. Fluxo básico Estado dos arquivos Staged Arquivos que serão enviados para o repositório
    63. 63. Fluxo básico Estado dos arquivos Staged $ git add hello_world.php $ git status
    64. 64. Fluxo básico Estado dos arquivos Staged $ git add hello_world.php $ git status Output: # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: hello_world.php # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # Readme
    65. 65. Fluxo básico Estado dos arquivos Commited Arquivos que já estão no repositório git
    66. 66. Fluxo básico Estado dos arquivos Commited $ git commit -m "showing hello world"
    67. 67. Fluxo básico Estado dos arquivos Commited $ git commit -m "showing hello world" Output: [master 83d672c] showing hello world 1 files changed, 3 insertions(+), 0 deletions(-)
    68. 68. Fluxo básico Estado dos arquivos Commited $ git status
    69. 69. Fluxo básico Estado dos arquivos Commited $ git status Output: # On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # Readme nothing added to commit but untracked files present (use "git add" to track)
    70. 70. Dica Colorindo o output $ git config --global color.ui true
    71. 71. Fluxo básico Resumo Editar os arquivos Vim / emacs / textmate / etc Colocar os arquivos em staged git add nome do arquivo Verificar as mudanças git status Fazer o commit das mudanças git commit -m “mensagem do commit”
    72. 72. Dica Sempre leia as mensagens do Git Output: # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: hello_world.php # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # Readme
    73. 73. Comandos
    74. 74. Comandos git diff Visualiza o que foi modificado
    75. 75. Comandos git diff $ vim hello_world.php <?php echo 'Hello world, no PHP HackDay'; ?>
    76. 76. Comandos git diff $ git diff
    77. 77. Comandos git diff $ git diff Output: diff --git a/hello_world.php b/hello_world.php index fe71dc6..04beafa 100644 --- a/hello_world.php +++ b/hello_world.php @@ -1,3 +1,3 @@ <?php - echo 'Hello world'; + echo 'Hello world, no PHP HackDay'; ?> No newline at end of file
    78. 78. Comandos git diff --word-diff Visualiza o que foi modificado, diferenciando por palavras
    79. 79. Comandos git diff --word-diff $ git diff --word-diff
    80. 80. Comandos git diff --word-diff $ git diff --word-diff Output: diff --git a/hello_world.php b/hello_world.php index fe71dc6..04beafa 100644 --- a/hello_world.php +++ b/hello_world.php @@ -1,3 +1,3 @@ <?php echo 'Hello [-world';-]{+world, no PHP HackDay';+} ?> No newline at end of file
    81. 81. Comandos git diff --cached Visualiza o que foi modificado e está staged
    82. 82. Comandos git diff --cached $ git add hello_world.php $ git status
    83. 83. Comandos git diff --cached $ git add hello_world.php $ git status Output: # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: hello_world.php ## Untracked files: # (use "git add <file>..." to include in what will be committed) # # Readme
    84. 84. Comandos git diff --cached $ git diff
    85. 85. Comandos git diff --cached $ git diff Output:
    86. 86. Comandos git diff --cached $ git diff --cached
    87. 87. Comandos git diff --cached $ git diff --cached Output: diff --git a/hello_world.php b/hello_world.php index fe71dc6..04beafa 100644 --- a/hello_world.php +++ b/hello_world.php @@ -1,3 +1,3 @@ <?php - echo 'Hello world'; + echo 'Hello world, no PHP HackDay'; ?> No newline at end of file
    88. 88. Comandos Commitando nossas alterações para continuarmos... $ git commit -m "change hello world message"
    89. 89. Comandos git commit -am Envia de modified para commited diretamente
    90. 90. Comandos git commit -am $ vim hello_world.php <?php echo 'Hello world, no PHP HackDay em 03/03/2012'; ?>
    91. 91. Comandos git commit -am $ git status
    92. 92. Comandos git commit -am $ git status Output: # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) ## modified: hello_world.php ## Untracked files: # (use "git add <file>..." to include in what will be committed) ## Readme no changes added to commit (use "git add" and/or "git commit -a")
    93. 93. Comandos git commit -am $ git commit -am "added date on hello world"
    94. 94. Comandos git commit -am $ git commit -am "added date on hello world" Output: [master 518bad1] added date on hello world 1 files changed, 1 insertions(+), 1 deletions(-)
    95. 95. Comandos git commit -am $ git status
    96. 96. Comandos git commit -am $ git status Output: # On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # Readme nothing added to commit but untracked files present (use "git add" to track)
    97. 97. Dica Se o git não conhece ele não mexe
    98. 98. Comandos Editando e commitando o Readme para continuarmos... $ vim Readme $ git add Readme $ git commit -m "added readme"
    99. 99. Comandos git log Exibe o histórico com infomações dos commits
    100. 100. Comandos git log $ git log
    101. 101. Comandos git log $ git log Output: commit a6aa0cb4d832a3a7c3a26001d89d8698e73790bb Author: Mauro George <maurogot@gmail.com> Date: Fri Jan 20 15:59:33 2012 -0200 added readme commit 518bad17f1bc064f4d542683925ae9f1003609bd Author: Mauro George <maurogot@gmail.com> Date: Fri Jan 20 15:27:07 2012 -0200 added date on hello world
    102. 102. Comandos git log --oneline Exibe o log em apenas uma linha
    103. 103. Comandos git log --oneline $ git log --oneline
    104. 104. Comandos git log --oneline $ git log --oneline Output: 53bc92d Revert "added date on hello world" a6aa0cb added readme 518bad1 added date on hello world 0e1b665 change hello world message 83d672c showing hello world bf3bd62 first commit
    105. 105. Voltando no tempo
    106. 106. Voltando no tempo git checkout <hash> Volta para o commit informado em <hash>
    107. 107. Voltando no tempo git checkout <hash> $ git checkout bf3bd62
    108. 108. Voltando no tempo git checkout <hash> Hash do primeiro commit $ git checkout bf3bd62
    109. 109. Voltando no tempo git checkout <hash> Hash do primeiro commit $ git checkout bf3bd62 Output: Note: checking out 'bf3bd62'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b new_branch_name HEAD is now at bf3bd62... first commit
    110. 110. Voltando no tempo git checkout <hash> $ ls hello_world.php $ cat hello_world.php
    111. 111. Voltando no tempo git checkout <hash> De volta para o futuro $ git checkout master
    112. 112. Voltando no tempo git checkout <hash> De volta para o futuro $ git checkout master Output: Previous HEAD position was bf3bd62... first commit Switched to branch 'master'
    113. 113. Voltando no tempo git checkout <hash> De volta para o futuro $ ls Readme hello_world.php $ cat hello_world.php <?php echo 'Hello world, no PHP HackDay em 03/03/2012'; ?>
    114. 114. Voltando no tempo git revert <hash> Reverte um commit criando um novo
    115. 115. Voltando no tempo git revert <hash> $ git revert 518bad1
    116. 116. Voltando no tempo git revert <hash> $ git revert 518bad1 Hash do quarto commit. Em que foi adicionada a data
    117. 117. Voltando no tempo git revert <hash> $ git revert 518bad1 Hash do quarto commit. Em que foi adicionada a data Output: [master 53bc92d] Revert "added date on hello world" 1 files changed, 1 insertions(+), 1 deletions(-)
    118. 118. Voltando no tempo git revert <hash> $ git revert 518bad1 Hash do quarto commit. Em que foi adicionada a data Output: [master 53bc92d] Revert "added date on hello world" 1 files changed, 1 insertions(+), 1 deletions(-) * Será solicitado para digitar uma mensagem do commit, mantenha a padrão por convenção
    119. 119. Voltando no tempo git revert <hash> $ cat hello_world.php <?php echo 'Hello world, no PHP HackDay'; ?>
    120. 120. Dica Commits pequenos e constantes Boa mensagem de commit Created model of User Má mensagem de commit Created model of User, Post and Comments and added template files
    121. 121. Voltando no tempo git checkout <hash> <arquivo> Recupera o arquivo do commit informado
    122. 122. Voltando no tempo git checkout <hash> <arquivo> $ git checkout 83d672c hello_world.php
    123. 123. Voltando no tempo git checkout <hash> <arquivo> $ git checkout 83d672c hello_world.php Hash do segundo commit. Em que foi criada a mensagem
    124. 124. Voltando no tempo git checkout <hash> <arquivo> $ git status
    125. 125. Voltando no tempo git checkout <hash> <arquivo> $ git status Output: # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) ## modified: hello_world.php #
    126. 126. Voltando no tempo git checkout <hash> <arquivo> $ git diff --cached
    127. 127. Voltando no tempo git checkout <hash> <arquivo> $ git diff --cached Output: diff --git a/hello_world.php b/hello_world.php index 04beafa..fe71dc6 100644 --- a/hello_world.php +++ b/hello_world.php @@ -1,3 +1,3 @@ <?php - echo 'Hello world, no PHP HackDay'; + echo 'Hello world'; ?> No newline at end of file
    128. 128. Perguntas?
    129. 129. Obrigado! @maurogeorge maurogeorge.github.com

    ×