Post on 19-Jan-2015
description
Git para iniciantes
sábado, 15 de dezembro de 2012
Git para iniciantes1.3.0
sábado, 15 de dezembro de 2012
Mauro... quem?
sábado, 15 de dezembro de 2012
Mauro... quem?
sábado, 15 de dezembro de 2012
Mauro... quem?
sábado, 15 de dezembro de 2012
sábado, 15 de dezembro de 2012
sábado, 15 de dezembro de 2012
Mauro George
http://maurogeorge.github.comhttp://www.aprenderphp.com.br@maurogeorge
sábado, 15 de dezembro de 2012
Sistemas de controle de versãoVCS (Version control systems)
sábado, 15 de dezembro de 2012
Pra que?
sábado, 15 de dezembro de 2012
Pra que?
Gerenciar diferentes versões de um arquivo
sábado, 15 de dezembro de 2012
Pra que?
Guardar histórico de alterações de um arquivo
sábado, 15 de dezembro de 2012
Pra que?
Saber quem fez e o porquê de cada alteração
sábado, 15 de dezembro de 2012
Vantagens
sábado, 15 de dezembro de 2012
Vantagens
Backup automático
sábado, 15 de dezembro de 2012
Vantagens
Controle do histórico
sábado, 15 de dezembro de 2012
Vantagens
Trabalho em equipe
sábado, 15 de dezembro de 2012
Vantagens
Marcação e resgate de versões estáveis
sábado, 15 de dezembro de 2012
Vantagens
Ramificação do projeto
sábado, 15 de dezembro de 2012
Diferentes modelos
sábado, 15 de dezembro de 2012
Centralizado
sábado, 15 de dezembro de 2012
Centralizado
Necessita de um servidor central
sábado, 15 de dezembro de 2012
Centralizado
O checkout é uma cópia da estrutura dos arquivos do repositório
sábado, 15 de dezembro de 2012
Centralizado
Somente usuários autorizados podem fazer commits
sábado, 15 de dezembro de 2012
Centralizado
sábado, 15 de dezembro de 2012
Distribuído
sábado, 15 de dezembro de 2012
Distribuído
Cada cópia é um repositório com o histórico completo
sábado, 15 de dezembro de 2012
Distribuído
Não necessita de acesso a rede ou um servidor central
sábado, 15 de dezembro de 2012
Distribuído
Commits podem ser feitos offline
sábado, 15 de dezembro de 2012
Distribuído
Commits podem ser facilmente transferidos entre repositórios
sábado, 15 de dezembro de 2012
Distribuído
sábado, 15 de dezembro de 2012
Distribuído
sábado, 15 de dezembro de 2012
Pesquisa
sábado, 15 de dezembro de 2012
Utiliza:NenhumSubversionMercurialGitOutro
Pesquisa
sábado, 15 de dezembro de 2012
Git
sábado, 15 de dezembro de 2012
Git
Open source
sábado, 15 de dezembro de 2012
Git
Desenvolvido originalmente por Linus Torvalds, com o objetivo de...
sábado, 15 de dezembro de 2012
Git
.. manter o Kernel do Linux
sábado, 15 de dezembro de 2012
Git
“focado em velocidade, efetividade e usabilidade do mundo real em grandes projetos”
sábado, 15 de dezembro de 2012
Instalação
sábado, 15 de dezembro de 2012
Instalação Mac
DMGhttp://code.google.com/p/git-osx-installer/downloads/list?can=3
Homebrew (mxcl.github.com/homebrew)$ brew install git
sábado, 15 de dezembro de 2012
Instalação Linux
apt-get$ sudo apt-get install git-core git-gui git-doc
sábado, 15 de dezembro de 2012
Instalação Windows
msysgithttp://code.google.com/p/msysgit/downloads/list
* Use Git Bash Only** Checkout Windows-style, commit Unix-style line endings
sábado, 15 de dezembro de 2012
GUIs
sábado, 15 de dezembro de 2012
GUIs Gitk para todas as plataformas
sábado, 15 de dezembro de 2012
GUIs GitX (L) para Mac
http://gitx.laullon.com/ *GitX -> Enable Terminal Usage
sábado, 15 de dezembro de 2012
Gerenciador de pacotes
GUIs Gitg para Linux
sábado, 15 de dezembro de 2012
http://code.google.com/p/tortoisegit/
GUIs tortoisegit para Windows
sábado, 15 de dezembro de 2012
Primeiros passos
sábado, 15 de dezembro de 2012
Primeiros passos
Configuração$ git config --global user.name "Mauro George"$ git config --global user.email "maurogot@gmail.com"
sábado, 15 de dezembro de 2012
Primeiros passos
Criando nosso projeto
$ mkdir project$ cd project$ touch hello_world.php
sábado, 15 de dezembro de 2012
Primeiros passos
Criando um repositório
$ git init
sábado, 15 de dezembro de 2012
Primeiros passos
Criando um repositório
$ git init
Output:Initialized empty Git repository in /path/to/my/project/.git/
sábado, 15 de dezembro de 2012
Primeiros passos
Primeiro commit
$ git add .$ git commit -m "first commit"
sábado, 15 de dezembro de 2012
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
sábado, 15 de dezembro de 2012
Primeiros passos
Primeiro commit
$ git status
sábado, 15 de dezembro de 2012
Primeiros passos
Primeiro commit
$ git status
Output:# On branch masternothing to commit (working directory clean)
sábado, 15 de dezembro de 2012
Fluxo básico
sábado, 15 de dezembro de 2012
Fluxo básico
Estado dos arquivosUntrackedModifiedStagedCommited
sábado, 15 de dezembro de 2012
Fluxo básico
Estado dos arquivos UntrackedArquivos que o git não conhece
sábado, 15 de dezembro de 2012
Fluxo básico
Estado dos arquivos Untracked$ touch Readme$ git status
sábado, 15 de dezembro de 2012
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)## Readmenothing added to commit but untracked files present (use "git add" to track)
sábado, 15 de dezembro de 2012
Fluxo básico
Estado dos arquivos ModifiedArquivos que o git já conhece e que foram alterados
sábado, 15 de dezembro de 2012
Fluxo básico
Estado dos arquivos Modified$ vim hello_world.php
<?php echo 'Hello world';?>
sábado, 15 de dezembro de 2012
Fluxo básico
Estado dos arquivos Modified$ git status
sábado, 15 de dezembro de 2012
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)## Readmeno changes added to commit (use "git add" and/or "git commit -a")
sábado, 15 de dezembro de 2012
Fluxo básico
Estado dos arquivos StagedArquivos que serão enviados para o repositório
sábado, 15 de dezembro de 2012
Fluxo básico
Estado dos arquivos Staged$ git add hello_world.php$ git status
sábado, 15 de dezembro de 2012
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
sábado, 15 de dezembro de 2012
Fluxo básico
Estado dos arquivos CommitedArquivos que já estão no repositório git
sábado, 15 de dezembro de 2012
Fluxo básico
Estado dos arquivos Commited$ git commit -m "showing hello world"
sábado, 15 de dezembro de 2012
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(-)
sábado, 15 de dezembro de 2012
Fluxo básico
Estado dos arquivos Commited$ git status
sábado, 15 de dezembro de 2012
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)## Readmenothing added to commit but untracked files present (use "git add" to track)
sábado, 15 de dezembro de 2012
Dica
Colorindo o output$ git config --global color.ui true
sábado, 15 de dezembro de 2012
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çasgit commit -m “mensagem do commit”
sábado, 15 de dezembro de 2012
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
sábado, 15 de dezembro de 2012
Comandos
sábado, 15 de dezembro de 2012
Comandos
git diffVisualiza o que foi modificado
sábado, 15 de dezembro de 2012
Comandos
git diff$ vim hello_world.php
<?php echo ‘Hello world, na PHP Conference Brasil 2012’;?>
sábado, 15 de dezembro de 2012
Comandos
git diff$ git diff
sábado, 15 de dezembro de 2012
Comandos
git diff$ git diff
Output:diff --git a/hello_world.php b/hello_world.phpindex fe71dc6..04beafa 100644--- a/hello_world.php+++ b/hello_world.php@@ -1,3 +1,3 @@ <?php- echo 'Hello world';+ echo ‘Hello world, na PHP Conference Brasil 2012’; ?>\ No newline at end of file
sábado, 15 de dezembro de 2012
Comandos
git diff --word-diffVisualiza o que foi modificado, diferenciando por palavras
sábado, 15 de dezembro de 2012
Comandos
git diff --word-diff$ git diff --word-diff
sábado, 15 de dezembro de 2012
Comandos
git diff --word-diff$ git diff --word-diff
Output:diff --git a/hello_world.php b/hello_world.phpindex fe71dc6..04beafa 100644--- a/hello_world.php+++ b/hello_world.php@@ -1,3 +1,3 @@<?php echo ‘Hello [-world’;-]{+world, na PHP Conference Brasil 2012”;+}?> No newline at end of file
sábado, 15 de dezembro de 2012
Comandos
git diff --cachedVisualiza o que foi modificado e está staged
sábado, 15 de dezembro de 2012
Comandos
git diff --cached$ git add hello_world.php$ git status
sábado, 15 de dezembro de 2012
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
sábado, 15 de dezembro de 2012
Comandos
git diff --cached$ git diff
sábado, 15 de dezembro de 2012
Comandos
git diff --cached$ git diff
Output:
sábado, 15 de dezembro de 2012
Comandos
git diff --cached$ git diff --cached
sábado, 15 de dezembro de 2012
Comandos
git diff --cached$ git diff --cached
Output:diff --git a/hello_world.php b/hello_world.phpindex fe71dc6..04beafa 100644--- a/hello_world.php+++ b/hello_world.php@@ -1,3 +1,3 @@ <?php- echo 'Hello world';+ echo ‘Hello world, na PHP Conference Brasil 2012’; ?>\ No newline at end of file
sábado, 15 de dezembro de 2012
Comandos
Commitando nossas alterações para continuarmos...$ git commit -m "change hello world message"
sábado, 15 de dezembro de 2012
Comandos
git commit -am Envia de modified para commited diretamente
sábado, 15 de dezembro de 2012
Comandos
git commit -am $ vim hello_world.php
<?php echo ‘Hello world, na PHP Conference Brasil 2012 em 30/11/2012’;?>
sábado, 15 de dezembro de 2012
Comandos
git commit -am $ git status
sábado, 15 de dezembro de 2012
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)## Readmeno changes added to commit (use "git add" and/or "git commit -a")
sábado, 15 de dezembro de 2012
Comandos
git commit -am $ git commit -am "added date on hello world"
sábado, 15 de dezembro de 2012
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(-)
sábado, 15 de dezembro de 2012
Comandos
git commit -am $ git status
sábado, 15 de dezembro de 2012
Comandos
git commit -am $ git status
Output:# On branch master# Untracked files:# (use "git add <file>..." to include in what will be committed)## Readmenothing added to commit but untracked files present (use "git add" to track)
sábado, 15 de dezembro de 2012
Dica
Se o git não conhece ele não mexe
sábado, 15 de dezembro de 2012
Comandos
Editando e commitando o Readme para continuarmos...$ vim Readme$ git add Readme$ git commit -m "added readme"
sábado, 15 de dezembro de 2012
Comandos
git logExibe o histórico com infomações dos commits
sábado, 15 de dezembro de 2012
Comandos
git log$ git log
sábado, 15 de dezembro de 2012
Comandos
git log$ git log
Output:commit a6aa0cb4d832a3a7c3a26001d89d8698e73790bbAuthor: Mauro George <maurogot@gmail.com>Date: Fri Jan 20 15:59:33 2012 -0200
added readme
commit 518bad17f1bc064f4d542683925ae9f1003609bdAuthor: Mauro George <maurogot@gmail.com>Date: Fri Jan 20 15:27:07 2012 -0200
added date on hello world
sábado, 15 de dezembro de 2012
Comandos
git log --onelineExibe o log em apenas uma linha
sábado, 15 de dezembro de 2012
Comandos
git log --oneline$ git log --oneline
sábado, 15 de dezembro de 2012
Comandos
git log --oneline$ git log --oneline
Output:53bc92d Revert "added date on hello world"a6aa0cb added readme518bad1 added date on hello world0e1b665 change hello world message83d672c showing hello worldbf3bd62 first commit
sábado, 15 de dezembro de 2012
Voltando no tempo
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout <hash>Volta para o commit informado em <hash>
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout <hash>$ git checkout bf3bd62
sábado, 15 de dezembro de 2012
$ git checkout bf3bd62
Voltando no tempo
git checkout <hash> Hash do primeiro commit
sábado, 15 de dezembro de 2012
$ git checkout bf3bd62
Voltando no tempo
git checkout <hash> Hash do primeiro commit
Output:Note: checking out 'bf3bd62'.
You are in 'detached HEAD' state. You can look around, make experimentalchanges and commit them, and you can discard any commits you make in thisstate without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you maydo 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
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout <hash>$ lshello_world.php$ cat hello_world.php
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout <hash> De volta para o futuro $ git checkout master
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout <hash> De volta para o futuro $ git checkout master
Output:Previous HEAD position was bf3bd62... first commitSwitched to branch 'master'
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout <hash> De volta para o futuro$ lsReadme hello_world.php$ cat hello_world.php<?php echo ‘Hello world, na PHP Conference Brasil 2012 em 30/11/2012’;?>
sábado, 15 de dezembro de 2012
Voltando no tempo
git revert <hash>Reverte um commit criando um novo
sábado, 15 de dezembro de 2012
$ git revert 518bad1
Voltando no tempo
git revert <hash>
sábado, 15 de dezembro de 2012
Voltando no tempo
git revert <hash>$ git revert 518bad1
Hash do quarto commit.
Em que foi adicionada a data
sábado, 15 de dezembro de 2012
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(-)
sábado, 15 de dezembro de 2012
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
sábado, 15 de dezembro de 2012
$ cat hello_world.php<?php echo ‘Hello world, na PHP Conference Brasil 2012’;?>
Voltando no tempo
git revert <hash>
sábado, 15 de dezembro de 2012
Dica
Commits pequenos e constantes
Created model of User
Boa mensagem de commit
Created model of User, Post and Comments and added template files
Má mensagem de commit
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout <hash> <arquivo>Recupera o arquivo do commit informado
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout <hash> <arquivo>$ git checkout 83d672c hello_world.php
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout <hash> <arquivo>$ git checkout 83d672c hello_world.php
Hash do segundo commit.Em que foi criada a mensagem
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout <hash> <arquivo>$ git status
sábado, 15 de dezembro de 2012
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#
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout <hash> <arquivo>$ git diff --cached
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout <hash> <arquivo>$ git diff --cached
Output:diff --git a/hello_world.php b/hello_world.phpindex 04beafa..fe71dc6 100644--- a/hello_world.php+++ b/hello_world.php@@ -1,3 +1,3 @@ <?php- echo ‘Hello world, na PHP Conference Brasil 2012’;+ echo 'Hello world'; ?>\ No newline at end of file
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout .Recupera todos os arquivos sobreescrevendo as mudanças locais
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout .$ vim hello_world.php$ vim Readme
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout .$ vim hello_world.php$ vim Readme
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout .$ git status
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout .$ 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: Readme# modified: hello_world.php#no changes added to commit (use "git add" and/or "git commit -a")
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout .$ git checkout .
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout .$ git status
sábado, 15 de dezembro de 2012
Voltando no tempo
git checkout .$ git status
Output:# On branch masternothing to commit (working directory clean)
sábado, 15 de dezembro de 2012
sábado, 15 de dezembro de 2012
vimeo.com/2979844
23 de janeiro de 2005
Github
sábado, 15 de dezembro de 2012
Github
19 de janeiro de 2009
vimeo.com/2979844sábado, 15 de dezembro de 2012
https://github.com/BielSystems/boletophp/
Boleto PHP
sábado, 15 de dezembro de 2012
https://github.com/BielSystems/boletophp/
Boleto PHP
sábado, 15 de dezembro de 2012
Boleto PHP
sábado, 15 de dezembro de 2012
Perguntas?
sábado, 15 de dezembro de 2012
Obrigado!@maurogeorge
maurogeorge.github.com
sábado, 15 de dezembro de 2012