Use o git e perca o medo de errar

Post on 09-Aug-2015

183 views 1 download

Transcript of Use o git e perca o medo de errar

Bruno Calheira

Use o Git e perca o Medo de Errar

Quem é Bruno Calheira?

● Baiano● Matemático, Especialista em

Engenharia de Software● Técnico Judiciário do TJ-BA● Delegado Sindical● Consultor e Desenvolvedor Web

Freelancer apaixonado por Softwares Livres

As FALHAS de hoje são os

degraus para o SUCESSO de

amanhã.

“O sucesso é 1% de inspiração

e 99% de transpiração.”

Thomas Edson

E se pudéssemos

voltar atrás e

corrigir os erros?

Sistemas de Controle de Versões

SCV

Sistemas de Controle de Versões

armazenam as alterações feitas em um

conjunto de arquivos ao longo do tempo,

permitindo que, posteriormente, você

retorne estes arquivos aos seus estados

anteriores.

Eficiência

Vantagens de usar um SCV

Eficiência● Economia de Espaço

Vantagens de usar um SCV

Eficiência● Economia de Espaço

● Padronização das Informações a

respeito de cada versão

Vantagens de usar um SCV

Eficiência● Economia de Espaço

● Padronização das Informações a

respeito de cada versão

● Destaca as diferenças de cada

versão salva

Vantagens de usar um SCV

Vantagens de usar um SCV

Segurança

Vantagens de usar um SCV

Segurança● Funciona como Backup

Vantagens de usar um SCV

Segurança● Funciona como Backup

● Permite recuperar arquivos

apagados por acidente

Vantagens de usar um SCV

Segurança● Funciona como Backup

● Permite recuperar arquivos

apagados por acidente

● Permite recuperar versões

anteriores de um arquivo

Vantagens de usar um SCV

Colaboração

Vantagens de usar um SCV

Colaboração● Múltiplos usuários podem

trabalhar em um mesmo arquivo

simultaneamente

Vantagens de usar um SCV

Colaboração● Múltiplos usuários podem

trabalhar em um mesmo arquivo

simultaneamente

● Saber: quem alterou o quê,

quando e como

Principais SCV

Principais SCV

Principais SCV

Conhecendo o Git

Open Source

Conhecendo o Git

Distribuído

Cada usuário possui um

repositório completo.

Vocabulário

Repositório

Espécie de Banco de Dados onde o SCV armazena as versões e os metadados destas versões.

Nos SCV Centralizados

existe uma única cópia

do Repositório

armazenada no Servidor

O Git é um SVC Distribuído.

Cada usuário possui um

repositório completo.

Conhecendo o Git

Rápido

Reduz a necessidade de

conexão com o servidor.

Git - Trabalhando Off-line

● Ver o histórico

● Comparar diferenças

● Confirmar alterações

● ...

Conhecendo o Git

Fácil Aprendizado

Comunidade ativa e

amigável.

Git na Prática

Instalando o Git

git-scm.com

Quem tem medo do terminal?

git-scm.com/downloads/guis

Git na Prática

Configurando o Git

Comando

git config

Configura o git

~ >

~ > git config --global user.name “Fulano de Tal”

~ >

~ > git config --global user.name “Fulano de Tal”

~ > git config --global user.email fulano@gmail.com

~ >

~ > git config --list

~ > git config --listuser.name=Fulano de Tal

user.email=fulano@exemplo.com

core.editor=nano -wl1

color.ui=true

core.repositoryformatversion=0

core.filemode=true

core.bare=false

core.logallrefupdates=true

core.ignorecase=true

core.precomposeunicode=true

~ >

Git na Prática

Criando um Repositório

~ > cd Sites #entra no diretório Sites

~/Sites >

~ > cd Sites #entra no diretório Sites

~/Sites > mkdir acaraqueijo #cria diretorio

~ > cd Sites #entra no diretório Sites

~/Sites > mkdir acaraqueijo #cria diretorio

~/Sites > cd acaraqueijo

~/Sites/acaraqueijo >

~ > cd Sites #entra no diretório Sites

~/Sites > mkdir acaraqueijo #cria diretorio

~/Sites > cd acaraqueijo

~/Sites/acaraqueijo > touch index.html #cria arquivo

Comando

git init

Inicia um repositório

~/Sites/acaraqueijo > git init

~/Sites/acaraqueijo > git initInitialized empty Git repository in

/Users/brunocalheira/Sites/acaraqueijo/.git/

~/Sites/acaraqueijo >

~/Sites/acaraqueijo > git initInitialized empty Git repository in

/Users/brunocalheira/Sites/acaraqueijo/.git/

~/Sites/acaraqueijo > ls #listar conteúdo

~/Sites/acaraqueijo > git initInitialized empty Git repository in

/Users/brunocalheira/Sites/acaraqueijo/.git/

~/Sites/acaraqueijo > ls #listar conteúdo

index.html

~/Sites/acaraqueijo >

~/Sites/acaraqueijo > ls -a #listar ocultos. .. .git index.html

~/Sites/acaraqueijo >

Git na Prática

Rastreando Arquivos

Comando

git status

Verifica o status dos arquivos

~/Sites/acaraqueijo > git status

~/Sites/acaraqueijo > git statusOn branch master

Initial commit

Untracked files:

(use "git add <file>..." to include in what will be committed)

index.html

nothing added to commit but untracked files present (use "git add" to

track)

~/Sites/acaraqueijo >

Comando

git add

Adiciona arquivos ao Stage

Diretório de Trabalho

Área de Staging

RepositórioGit

Diretório de Trabalho

Área de Staging

RepositórioGit

git add

~/Sites/acaraqueijo > git add index.html

~/Sites/acaraqueijo > git add index.html

~/Sites/acaraqueijo >

~/Sites/acaraqueijo > git add index.html

~/Sites/acaraqueijo > git status

~/Sites/acaraqueijo > git add index.html

~/Sites/acaraqueijo > git statusOn branch master

Initial commit

Changes to be committed:

(use "git rm --cached <file>..." to unstage)

new file: index.html

~/Sites/acaraqueijo >

Comando

git commit

Confirma o registro de uma versãodo projeto no repositório

Diretório de Trabalho

Área de Staging

RepositórioGit

git commit

~/Sites/acaraqueijo > git commit -m "Versão Inicial"

~/Sites/acaraqueijo > git commit -m "Versão Inicial"[master (root-commit) ba338c4] Versão Inicial

1 file changed, 15 insertions(+)

create mode 100644 index.html

~/Sites/acaraqueijo >

Comando

git log

Consulta os commits realizados

~/Sites/acaraqueijo > git logcommit ba338c4f76e5b6acd8846e24443abd49050d8105

Author: Bruno Calheira <bruno@calheira.com>

Date: Sun May 24 17:01:14 2015 -0300

Versão Inicial

~/Sites/acaraqueijo >

Vocabulário

Commit Hash

Identificador único de cada commit.Composto por 40 caracteres usando uma função de checksum.

Git na Prática

Alterando o projeto

~/Sites/acaraqueijo > git status 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: index.html

Untracked files:

(use "git add <file>..." to include in what will be committed)

style.css

no changes added to commit (use "git add" and/or "git commit -a")

~/Sites/acaraqueijo >

~/Sites/acaraqueijo > git add .

~/Sites/acaraqueijo >

~/Sites/acaraqueijo > git add .

~/Sites/acaraqueijo > git statusOn branch master

Changes to be committed:

(use "git reset HEAD <file>..." to unstage)

modified: index.html

new file: style.css

~/Sites/acaraqueijo >

~/Sites/acaraqueijo > git commit -m "Adiciona Folha de Estilos"

~/Sites/acaraqueijo > git commit -m "Adiciona Folha de Estilos"[master 0bab0e3] Adiciona Folha de Estilos

2 files changed, 12 insertions(+)

create mode 100644 style.css

~/Sites/acaraqueijo >

~/Sites/acaraqueijo > git log --oneline

~/Sites/acaraqueijo > git log --oneline0bab0e3 Adiciona Folha de Estilos

ba338c4 Versão Inicial

~/Sites/acaraqueijo >

Git na Prática

Ramificando o projeto

Comando

git branch

exibe, cria e deleta ramos

~/Sites/acaraqueijo > git branch

~/Sites/acaraqueijo > git branch * master

~/Sites/acaraqueijo >

~/Sites/acaraqueijo > git branch * master

~/Sites/acaraqueijo > git branch figura

~/Sites/acaraqueijo >

~/Sites/acaraqueijo > git branch * master

~/Sites/acaraqueijo > git branch figura

~/Sites/acaraqueijo > git branch

~/Sites/acaraqueijo > git branch * master

~/Sites/acaraqueijo > git branch figura

~/Sites/acaraqueijo > git branch figura

* master

~/Sites/acaraqueijo >

Comando

git checkout

Carrega um arquivoCarrega um ramo

Carrega uma versão

~/Sites/acaraqueijo > git branch * master

~/Sites/acaraqueijo > git branch figura

~/Sites/acaraqueijo > git branch figura

* master

~/Sites/acaraqueijo > git checkout figura

~/Sites/acaraqueijo > git branch * master

~/Sites/acaraqueijo > git branch figura

~/Sites/acaraqueijo > git branch figura

* master

~/Sites/acaraqueijo > git checkout figuraSwitched to branch 'figura'

~/Sites/acaraqueijo >

~/Sites/acaraqueijo > git branch * master

~/Sites/acaraqueijo > git branch figura

~/Sites/acaraqueijo > git branch figura

* master

~/Sites/acaraqueijo > git checkout figuraSwitched to branch 'figura'

~/Sites/acaraqueijo > git branch* figura

master

~/Sites/acaraqueijo >

~/Sites/acaraqueijo > git add .

~/Sites/acaraqueijo > git commit -m "Adiciona Foto"

~/Sites/acaraqueijo > git add .

~/Sites/acaraqueijo > git commit -m "Adiciona Foto"[figura 0ba52ff] Adiciona Foto

2 files changed, 1 insertion(+)

create mode 100644 acaraqueijo.jpg

~/Sites/acaraqueijo >

~/Sites/acaraqueijo > git log --oneline0ba52ff Adiciona Foto

0bab0e3 Adiciona Folha de Estilos

ba338c4 Versão Inicial

~/Sites/acaraqueijo >

~/Sites/acaraqueijo > git log --oneline0ba52ff Adiciona Foto

0bab0e3 Adiciona Folha de Estilos

ba338c4 Versão Inicial

~/Sites/acaraqueijo > git checkout master

Switched to branch 'master'

~/Sites/acaraqueijo >

~/Sites/acaraqueijo > git log --oneline0ba52ff Adiciona Foto

0bab0e3 Adiciona Folha de Estilos

ba338c4 Versão Inicial

~/Sites/acaraqueijo > git checkout master

Switched to branch 'master'

~/Sites/acaraqueijo > git log --oneline

~/Sites/acaraqueijo > git log --oneline0ba52ff Adiciona Foto

0bab0e3 Adiciona Folha de Estilos

ba338c4 Versão Inicial

~/Sites/acaraqueijo > git checkout master

Switched to branch 'master'

~/Sites/acaraqueijo > git log --oneline0bab0e3 Adiciona Folha de Estilos

ba338c4 Versão Inicial

~/Sites/acaraqueijo >

Comando

git merge

Agrega as versões de outro ramono ramo atual

~/Sites/acaraqueijo > git merge figura

~/Sites/acaraqueijo > git merge figura

Updating 0bab0e3..0ba52ff

Fast-forward

acaraqueijo.jpg | Bin 0 -> 50510 bytes

index.html | 1 +

2 files changed, 1 insertion(+)

create mode 100644 acaraqueijo.jpg

~/Sites/acaraqueijo >

~/Sites/acaraqueijo > git merge figura

Updating 0bab0e3..0ba52ff

Fast-forward

acaraqueijo.jpg | Bin 0 -> 50510 bytes

index.html | 1 +

2 files changed, 1 insertion(+)

create mode 100644 acaraqueijo.jpg

~/Sites/acaraqueijo > git log --oneline

~/Sites/acaraqueijo > git merge figura

Updating 0bab0e3..0ba52ff

Fast-forward

acaraqueijo.jpg | Bin 0 -> 50510 bytes

index.html | 1 +

2 files changed, 1 insertion(+)

create mode 100644 acaraqueijo.jpg

~/Sites/acaraqueijo > git log --oneline0ba52ff Adiciona Foto

0bab0e3 Adiciona Folha de Estilos

ba338c4 Versão Inicial

~/Sites/acaraqueijo >

Git na Prática

Repositórios Remotos

GitLab.com

Bitbucket.com

GitHub.com

Comando

git remote

lista, adiciona, remove repositórios remotos

~/Sites/acaraqueijo > git remote add origin https:

//github.com/calheira/acaraqueijo.git

~/Sites/acaraqueijo >

Comando

git push

Envia as atualizações do repositório local

para o repositório remoto

~/Sites/acaraqueijo > git remote add origin https:

//github.com/calheira/acaraqueijo.git

~/Sites/acaraqueijo > git push -u origin master

~/Sites/acaraqueijo > git remote add origin https:

//github.com/calheira/acaraqueijo.git

~/Sites/acaraqueijo > git push -u origin master Counting objects: 11, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (10/10), done.

Writing objects: 100% (11/11), 50.42 KiB | 0 bytes/s, done.

Total 11 (delta 2), reused 0 (delta 0)

To https://github.com/calheira/acaraqueijo.git

* [new branch] master -> master

Branch master set up to track remote branch master from origin.

~/Sites/acaraqueijo >

https://github.com/calheira/acaraqueijo

Git & WordPress

Git & WordPress

Utilize o .gitignore para excluir os aquivos e diretórios sensíveis.

Git & WordPress

Use o git controlar apenas arquivos que você altera com frequência.

Git & WordPress

Use o git controlar apenas arquivos que você altera com frequência.

Controle apenas seuTema Filho.

Git & WordPress

Para controlar o BD utilize o plugin Revisr.

revisr.io

Onde aprender mais?

http://git-scm.com/book/pt-br/v1

Obrigado

pela atenção!

Dúvidas?

Contato bruno@calheira.com

@brunocalheira