Git that like a boss - Dos comandos básicos aos branches.
-
Upload
helio-medeiros -
Category
Documents
-
view
501 -
download
7
description
Transcript of Git that like a boss - Dos comandos básicos aos branches.
@evandroeisinger@helmedeiros
@rssilva
git that like a bossESCREVENDO CÓDIGO
COMPARTILHANDO CONHECIMENTO
QUEM?
@evandroeisinger
QUEM?
@helmedeiros
QUEM?
@rssilva
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
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/
!=
enxuto
branching
O QUE É GIT?git that like a boss
offLine
distribuido
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
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.
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.
.|--
.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.
INSTALANDO O GITgit that like a boss
download
git config
macosx
windows
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
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.
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.
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.
Instalando o Git no Windows é muito fácil. O projeto
msysGit tem um dos procedimentos de instalação mais
fácil.
WINDOWS
WINDOWS
Execute o instaladorClique em avançar (Next) até chegar na
etapa seguinte
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
WINDOWS
Select Start Menu Folderdeixe o caminho padrão e clique em
avançar (Next)
WINDOWS
Adjust your PATHdeixe marcado a opção Use Git Bash only
e prossiga com a instalação
WINDOWS
Configure the line endingmarque a primeira opção para quebras de linha independente do sistema operacional
WINDOWS
Completing the git setupinstalação foi concluída com sucesso
Existem algumas maneiras de instalar o git no macosx,
as principais envolvem gerenciadores de pacotes como
HomeBrew, MacPorts ou Fink.MACOSX
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.
MACOSX
Onde foi instaladoDepois de instalado você deve conseguir ver onde o mesmo foi instalado, rodando
o comando:
➜ ~ which git /usr/bin/git
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)
Para trabalhar de forma correta com o git o segundo
grande passo é realizar as configurações.
GIT CONFIG
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"
COMaNDOS NO GITgit that like a boss
novo projeto
log
tag
status
comitandoadicionando
NOVO REPOSITÓRIO
COPIAR ARQUIVOREAD
ME.md
├── 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
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
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/
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
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
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)
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
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
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
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
Para confirmar e armazenar as alterações realizadas
perante o histórico do git é necessário realizar o commit.
COMITANDO
Untracked
tracked
staged
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
Depois de vários commits, você provavelmente i
rá querer
ver o que aconteceu.
LOG
Untracked
tracked
staged
commit
f3d4346e
4a7b073d
5b03a802
0ab1c106
1292a
Author:
Helio Me
deiros
<helio.c
abralmed
eiros@gm
ail.com>
Date:
Sun Oct
20 12:28
:37 2013
-0200
Feit
o
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
O Git possui a funcionalidade de salvar pontos
específicos na história de um repositório,TAG
1.0
2.0
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"
TAG
Listando as TAGSPara visualizar as tags existentes no
repositório, basta executar o comando
➜ likeaboss git tagv1.0
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
BRANCHING NO GITgit that like a boss
o que são branchs
conflitos
removendo
novo branch
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
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
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
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”
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
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
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).
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”
Obrigado!
Fontes:Pro Git - Scott Chaconhttp://try.github.iohttp://nathanj.github.iohttp://gitready.com/
Imagens:http://git-scm.com/
@evandroeisinger@helmedeiros
@rssilva