git that like a boss - dos comandos básicos aos branches

61
@evandroeisinger @helmedeiros @rssilva git that like a boss ESCREVENDOCÓDIGO COMPARTILHANDOCONHECIMENTO

Upload: helio-medeiros

Post on 24-Dec-2014

500 views

Category:

Documents


7 download

DESCRIPTION

Trabalhar com sistemas de controle de versões não é só uma obrigação como uma estratégia para muitas empresas.... venha descobrir oque o git pode fazer por você. Dos comandos básicos ao nem tão básicos, oque faz o git tão bom.

TRANSCRIPT

Page 1: Git that like a boss - Dos comandos básicos aos branches

@evandroeisinger@helmedeiros

@rssilva

git that like a bossESCREVENDO CÓDIGO

COMPARTILHANDO CONHECIMENTO

Page 2: Git that like a boss - Dos comandos básicos aos branches

QUEM?

@evandroeisinger

Page 3: Git that like a boss - Dos comandos básicos aos branches

QUEM?

@helmedeiros

Page 4: Git that like a boss - Dos comandos básicos aos branches

QUEM?

@rssilva

Page 5: Git that like a boss - Dos comandos básicos aos branches

o que é git ?

instalando o git

comandos no git

repositórios no git

visão abrangente

ambiente configurado

trabalhando localmenteNOSSA AGENDA

HACKATHON

trabalhando em time

git that like a boss

repositórios no github

trabalhando online

Page 6: Git that like a boss - Dos comandos básicos aos branches

Git é um sistema de controle de versão distribuído livre e de código aberto, projetado para lidar com tudo, de pequenos a grandes

projetos, com velocidade e eficiência.

http://git-scm.com/

Page 7: Git that like a boss - Dos comandos básicos aos branches

!=

Page 8: Git that like a boss - Dos comandos básicos aos branches

enxuto

branching

O QUE É GIT?git that like a boss

offLine

distribuido

Page 9: Git that like a boss - Dos comandos básicos aos branches

Git pode ser usado online ou offli

ne, é possível fa

zer de

tudo, branching, merging, commiting, mesmo que você

não esteja conectado a nenhuma rede.offLine

Page 10: Git that like a boss - Dos comandos básicos aos branches

DISTRIBUIDO

Assim que você reto

rna a sua rede é possível en

viar ou

baixar informações de outros repositórios remotos, seja

ele um repositório centralizado ou de qualquer outra

pessoa.

Page 11: Git that like a boss - Dos comandos básicos aos branches

BRANCHING

O git fundamenta suas operações no sistema de

branches, produzindo um conjunto transparente de

funções e facilidades para a sua criação, mescla,

descarte, entre outros.

Page 12: Git that like a boss - Dos comandos básicos aos branches

.|--

.git

|-- Rake

file

|-- lib

| |-- p

ascals_tria

ngle.rb

| |-- p

retty_printed_arra

y.rb

|-- pasca

ls_triangle.gemspec

.|--

.svn

| |--

all-wcprops

| |--

entries

| |--

format

| |--

prop-base

| |--

props

| |--

text-base

| |

|-- Rake

file.svn-base

|.. Rake

file

|.. lib

| |--

.svn

| |

|-- all-w

cprops

| |

|-- entrie

s

| |

|-- format

ENXUTO

Diferentemente d

o SVN, o git possuí apenas um diretório

na raiz do projeto, sem necessidade ou possibilidade de

ser afetado negativ

amente com mudanças de nomes e

pastas.

Page 13: Git that like a boss - Dos comandos básicos aos branches

INSTALANDO O GITgit that like a boss

download

git config

macosx

windows

Page 14: Git that like a boss - Dos comandos básicos aos branches

Dependendo do sistema operacional utilizado em seu

ambiente de trabalho existirão

uma ou mais localidades

ou implementações a serem feitas download para o

funcionamento do git.

DOWNLOAD

Page 15: Git that like a boss - Dos comandos básicos aos branches

DOWNLOAD

Para o windowsFaça o download do instalador a

partir da pagina Google Code a baixo:http://msysgit.github.io/

1. Acessar http://msysgit.github.io;2. Selecionar a opção Downloads;

3. Selecionar a última versão disponível;

4. Selecionar novamente a versão previamente escolhida para começar o download.

Page 16: Git that like a boss - Dos comandos básicos aos branches

DOWNLOAD

Para o linuxVocê pode realizar o download e instalação por gerenciadores de pacotes como yum e apt-get, ou instalar através do código fonte

baixado de:http://git-scm.com/download

1. Acessar http://git-scm.com/download;2. Escolha a opção para download Linux;

3. Escolha a opção indicada para a sua distribuição.

Page 17: Git that like a boss - Dos comandos básicos aos branches

DOWNLOAD

Para o macOSXVocê pode realizar o download e instalação por gerenciadores de pacotes como homebrew, fink e

macports; assim como pode baixar o instalador dmg diretamente de:

http://code.google.com/p/git-osx-installer

1. Acessar http://code.google.com/p/git-osx-installer/;

2. Selecione a aba Dowloads no topo da página;

3. Selecione a versão mais atual compatível a sua versão do macosx;

4. Selecionar novamente a versão previamente escolhida para começar o download.

Page 18: Git that like a boss - Dos comandos básicos aos branches

Instalando o Git no Windows é muito fácil. O projeto

msysGit tem um dos procedimentos de instalação mais

fácil.

WINDOWS

Page 19: Git that like a boss - Dos comandos básicos aos branches

WINDOWS

Execute o instaladorClique em avançar (Next) até chegar na

etapa seguinte

Page 20: Git that like a boss - Dos comandos básicos aos branches

WINDOWS

Select ComponentsMarque a opção Simple context menu. Feito isso, avance para próxima tela

Habilitando está opção, o Git Bash e o Git GUI serão incorporados ao menu de contexto do Windows, possibilitando

executar o comando “Git Bash Here” dentro um diretório qualquer

Page 21: Git that like a boss - Dos comandos básicos aos branches

WINDOWS

Select Start Menu Folderdeixe o caminho padrão e clique em

avançar (Next)

Page 22: Git that like a boss - Dos comandos básicos aos branches

WINDOWS

Adjust your PATHdeixe marcado a opção Use Git Bash only

e prossiga com a instalação

Page 23: Git that like a boss - Dos comandos básicos aos branches

WINDOWS

Configure the line endingmarque a primeira opção para quebras de linha independente do sistema operacional

Page 24: Git that like a boss - Dos comandos básicos aos branches

WINDOWS

Completing the git setupinstalação foi concluída com sucesso

Page 25: Git that like a boss - Dos comandos básicos aos branches

Existem algumas maneiras de instalar o git no macosx,

as principais envolvem gerenciadores de pacotes como

HomeBrew, MacPorts ou Fink.MACOSX

Page 26: Git that like a boss - Dos comandos básicos aos branches

MACOSX

Instalando com BrewTendo o brew instalado você só precisa

fazer:➜ ~ brew install git

Se você ainda não usa homebrew para gerenciar pacotes no Mac OS, então eu

recomendo instalá-lo.

Page 27: Git that like a boss - Dos comandos básicos aos branches

MACOSX

Onde foi instaladoDepois de instalado você deve conseguir ver onde o mesmo foi instalado, rodando

o comando:

➜ ~ which git /usr/bin/git

Page 28: Git that like a boss - Dos comandos básicos aos branches

MACOSX

Qual versão instaladaApós instalado é possível conferir a qualquer momento a versão do git.

➜ ~ git --versiongit version 1.7.12.4 (Apple Git-37)

Page 29: Git that like a boss - Dos comandos básicos aos branches

Para trabalhar de forma correta com o git o segundo

grande passo é realizar as configurações.

GIT CONFIG

Page 30: Git that like a boss - Dos comandos básicos aos branches

GIT CONFIG

Adicionando configCaso seu usuário e email não estejam configurados, faça-o com o comando:

Na primeira vez quando não configurado o --list --global não possuí o .gitconfig na pasta

do usuário.

➜ ~ git config --global user.name "Nome completo"

➜ ~ git config --global user.email "Endereço de Email"

Page 31: Git that like a boss - Dos comandos básicos aos branches

COMaNDOS NO GITgit that like a boss

novo projeto

log

tag

status

comitandoadicionando

Page 32: Git that like a boss - Dos comandos básicos aos branches

NOVO REPOSITÓRIO

COPIAR ARQUIVOREAD

ME.md

Page 33: Git that like a boss - Dos comandos básicos aos branches

├── HEAD

├── bran

ches

├── co

nfig

├── descri

ption

├── hooks

│   ├── applypatch

-msg.sample

│   ├── co

mmit-msg.s

ample

│   ├── post-u

pdate.sample

│   ├── pre-applypatch

.sample

│   ├── pre-co

mmit.sample

│   ├── pre-rebase

.sample

│   ├── prepare

-commit-m

sg.sample

│   └── update.sam

ple

├── info

│   └── exclude

├── objects

│   ├── info

│   └── pack

└── refs

├──

heads

└──

tags

Para criar um repositório de um diretório de arquivos

existente, você pode simplesmente e

xecutar git init no

diretório

NOVO REPOSITÓRIO

Page 34: Git that like a boss - Dos comandos básicos aos branches

NOVO REPOSITÓRIO

Os arquivos a versionar Por exemplo, digamos que temos um

diretório com nosso arquivo nele, como:

➜ ~ mkdir likeaboss➜ ~ cd likeaboss➜ ~ touch README.md➜ likeaboss lsREADME.md

Page 35: Git that like a boss - Dos comandos básicos aos branches

NOVO REPOSITÓRIO

Criando o repositórioPara iniciar o controle de versão disso

com Git, podemos simplesmente executar git init, como:

➜ ~ git initInitialized empty Git repository in /Users/helmed/rbsdev/.git/

Page 36: Git that like a boss - Dos comandos básicos aos branches

NOVO REPOSITÓRIO

Novo diretórioApós a criação o git define um

diretório para armazenamento de versões

➜ ~ ls -la. .. .git README rbsdev.sh

Page 37: Git that like a boss - Dos comandos básicos aos branches

Em muitos momentos os arquivos sobe o versionamento

estarão no seu computador mas em um determ

inado

estado, qual será ele?

STATUS

Untracked

tracked

Page 38: Git that like a boss - Dos comandos básicos aos branches

STATUS

Conferindo o Estado dos arquivos

Em muitos momentos os arquivos sobe o versionamento estarão no

seu computador mas em um determinado estado. Para descobrir

em que estado podemos usar o comando status, veja:

➜ gitlikeaboss git status# On branch master## Initial commit#nothing to commit (create/copy files and use "git add" to track)➜ gitlikeaboss git status# On branch master## Initial commit## Untracked files:# (use "git add <file>..." to include in what will be committed)## README.mdnothing added to commit but untracked files present (use "git add" to track)

Page 39: Git that like a boss - Dos comandos básicos aos branches

Untracked

README.md

unmodified modified

README.md

staged

adicionado arquivo

alterado arquivo

colocou arquivo no stage

commitremovido arquivo

README.md README.md

NOVO REPOSITÓRIO

Page 40: Git that like a boss - Dos comandos básicos aos branches

Quando estamos trabalhando com arquivos sobe o

versionamento do git, temos que ter

sempre em mente o

ciclo de vida dos mesmos passando de não rastreados

para rastreados.

ADICIONANDOUntracked

tracked

Page 41: Git that like a boss - Dos comandos básicos aos branches

ADICIONANDO

Rastreando Arquivos

Para iniciar o rastreamento de um novo arquivo, você deve usar o

comando add. Veja:

➜ gitlikeaboss git add README.md➜ gitlikeaboss git status# On branch master## Initial commit## Changes to be committed:# (use "git rm --cached <file>..." to unstage)## new file: README.md

Page 42: Git that like a boss - Dos comandos básicos aos branches

ADICIONANDO

Várias formas de adiçãoPara adicionar arquivos em um commit, é necessário executar um comando que

insira ele no commit:

➜ gitlikeaboss git add .➜ gitlikeaboss git status# On branch master## Initial commit## Changes to be committed:# (use "git rm --cached <file>..." to unstage)## new file: README.md

➜ gitlikeaboss touch a.txt➜ gitlikeaboss git add *.txt➜ gitlikeaboss git status# On branch master## Initial commit## Changes to be committed:# (use "git rm --cached <file>..." to unstage)## new file: a.txt## Untracked files:# (use "git add <file>..." to include in what will be committed)## README.md

Page 43: Git that like a boss - Dos comandos básicos aos branches

Para confirmar e armazenar as alterações realizadas

perante o histórico do git é necessário realizar o commit.

COMITANDO

Untracked

tracked

staged

Page 44: Git that like a boss - Dos comandos básicos aos branches

COMITANDO

Descrevendo o commit Após a adição dos arquivos no commit

é possível executar o commit

➜ likeaboss git commit -m "Descrição do commit"[master (root-commit) edc6bb2] Descrição do commit 0 files changed create mode 100644 README.md

Page 46: Git that like a boss - Dos comandos básicos aos branches

LOG

O Histórico de commits Após um commit mais um registro é criado no histórico. Por padrão, sem argumentos, git log lista os commits feitos naquele repositório em ordem

cronológica reversa.

➜ likeaboss git logcommit e1cf3d4346e4a7b073d5b03a8020ab1c1061292aAuthor: Helio Medeiros <[email protected]>Date: Sun Oct 20 12:28:37 2013 -0200

Feito

Page 47: Git that like a boss - Dos comandos básicos aos branches

O Git possui a funcionalidade de salvar pontos

específicos na história de um repositório,TAG

1.0

2.0

Page 48: Git that like a boss - Dos comandos básicos aos branches

TAG

Criando TAGSNormalmente se segue o padrão v0.0.0

para a criação de tags, pois facilita a procura de tags específicas que são

feitas de forma decrescente e alfabética.

➜ likeaboss git tag -a v1.0 -m "Introducao"

Page 49: Git that like a boss - Dos comandos básicos aos branches

TAG

Listando as TAGSPara visualizar as tags existentes no

repositório, basta executar o comando

➜ likeaboss git tagv1.0

Page 50: Git that like a boss - Dos comandos básicos aos branches

TAG

Alternando entre tagsEm muitos casos desejamos alternar

entre versões para entender desde que oque foi feito até recuperar uma versão estável para promoção de bugs. Para

isso:

➜ likeaboss git tag checkout v1.0

Page 51: Git that like a boss - Dos comandos básicos aos branches

BRANCHING NO GITgit that like a boss

o que são branchs

conflitos

removendo

novo branch

Page 52: Git that like a boss - Dos comandos básicos aos branches

Um branch no Git é simplesmente um ponteiro do projeto,

que contém todos os arquivos. O branch padrão no Git é

o master, a partir deste s

urgem diversas ramificações,

isto vários branches. É um mundo paralelo.BRANCH

Master

Page 53: Git that like a boss - Dos comandos básicos aos branches

NOVO BRANCH

Branch Based Em alguns momentos desejamos

desenvolver novas funcionalidades, sejam para testar hipóteses ou apenas

memorizar uma possível ideia. Nestas horas o branch nos ajuda.

➜ likeaboss git branch nova-funcionalidade➜ likeaboss git branch

* masternova-funcionalidade

Um novo branch

➜ likeaboss git checkout nova-funcionalidade

Switched to branch 'nova-funcionalidade'

Selecionando o branch

Page 54: Git that like a boss - Dos comandos básicos aos branches

Diferença

Master intocadoPerceba que se você fizer checkout

neste momento voltando para o branch master, não deverá estar presente

nenhum resquício das alterações que acabamos de executar dentro do branch

nova-funcionalidade:

➜ gitlikeboss ls.gitignore1/1a.txtREADMEmnb.shoba.shrbsdev.shsenha.sh

➜ gitlikeboss git checkout masterSwitched to branch 'master'

➜ gitlikeboss git ls-files.gitignore1/1a.txtREADMEoba.shrbsdev.shsenha.sh

Page 55: Git that like a boss - Dos comandos básicos aos branches

Alterando

Fazendo nossas alterações

Agora é hora de fazermos as alterações que desejamos.

➜ gitlikeaboss touch CHANGE.md➜ gitlikeaboss git add .➜ gitlikeaboss git commit -m “Novo arquivo”

Page 56: Git that like a boss - Dos comandos básicos aos branches

visualizando

Visualizando as diferenças

Perceba que se você fizer novamente checkout, voltando para o branch master,

havera alterações que acabamos de executar dentro do branch nova-

funcionalidade:

➜ gitlikeboss lsREADME.mdCHANGE.md

➜ gitlikeboss git checkout masterSwitched to branch 'master'

➜ gitlikeboss lsREADME.mdCHANGE.md

Page 57: Git that like a boss - Dos comandos básicos aos branches

merge

Mesclando as alteraçõesApós a conclusão de uma tarefa é

possível integrá-la a linha de desenvolvimento central. Para fazer isso, você fará o merge do seu branch. Tudo

que você tem a fazer é executar o checkout do branch para onde deseja

fazer o merge e então rodar o comando git merge.

➜ gitlikeboss git checkout masterSwitched to branch 'master'

➜ gitlikeboss git merge nova-funcionalidade➜ gitlikeboss lsREADME.mdCHANGE.md

Page 58: Git that like a boss - Dos comandos básicos aos branches

removendo

RemovendoApós a conclusão do desenvolvimento de uma nova funcionalidade e sua integração ao master é interessante a remoção dos branches, mantendo o ambiente limpo.

➜ gitlikeboss git branch master* nova-funcionalidade

➜ gitlikeboss git branch --delete nova-funcionalidade error: Cannot delete the branch 'nova-funcionalidade' which you are currently on.

➜ gitlikeboss git checkout master Switched to branch 'master'

➜ gitlikeboss git branch --delete nova-funcionalidadeDeleted branch teste (was 27478a1).

Page 59: Git that like a boss - Dos comandos básicos aos branches

COnflitos

Merge com conflitosEm alguns momentos o git não

conseguirá apresentar uma solução para os conflitos gerados entre as várias

versões. Os conflitos podem acontecer durante os merges e commits. Sempre

que um conflito acontece a ação executada fica incompleta até que os

mesmos estejam resolvidos.

➜ gitlikeboss git merge novo-conflitoAuto-merging arquivo.txtCONFLICT (content): Merge conflict in README.mdAutomatic merge failed; fix conflicts and then commit the result.

➜ gitlikeboss git commit -m “Conflito resolvido”

Page 60: Git that like a boss - Dos comandos básicos aos branches

Obrigado!

Fontes:Pro Git - Scott Chaconhttp://try.github.iohttp://nathanj.github.iohttp://gitready.com/

Imagens:http://git-scm.com/

@evandroeisinger@helmedeiros

@rssilva

Page 61: Git that like a boss - Dos comandos básicos aos branches