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

Git that like a boss: Grupo RBS

Embed Size (px)

Citation preview

Page 1: Git that like a boss: Grupo RBS

@evandroeisinger@helmedeiros

@rssilva

git that like a bossESCREVENDO CÓDIGO

COMPARTILHANDO CONHECIMENTO

Page 2: Git that like a boss: Grupo RBS

QUEM?

@evandroeisinger

Page 3: Git that like a boss: Grupo RBS

QUEM?

@helmedeiros

Page 4: Git that like a boss: Grupo RBS

QUEM?

@rssilva

Page 5: Git that like a boss: Grupo RBS

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: Grupo RBS

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: Grupo RBS

!=

Page 8: Git that like a boss: Grupo RBS

enxuto

branching

O QUE É GIT?git that like a boss

offLine

distribuido

Page 9: Git that like a boss: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

.|--

.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: Grupo RBS

INSTALANDO O GITgit that like a boss

download

git config

macosx

windows

Page 14: Git that like a boss: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

WINDOWS

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

etapa seguinte

Page 20: Git that like a boss: Grupo RBS

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: Grupo RBS

WINDOWS

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

avançar (Next)

Page 22: Git that like a boss: Grupo RBS

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: Grupo RBS

WINDOWS

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

Page 24: Git that like a boss: Grupo RBS

WINDOWS

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

Page 25: Git that like a boss: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

COMaNDOS NO GITgit that like a boss

novo projeto

log

tag

status

comitandoadicionando

Page 32: Git that like a boss: Grupo RBS

NOVO REPOSITÓRIO

COPIAR ARQUIVOREAD

ME.md

Page 33: Git that like a boss: Grupo RBS

├── 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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

BRANCHING NO GITgit that like a boss

o que são branchs

conflitos

removendo

novo branch

Page 52: Git that like a boss: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS

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: Grupo RBS