Você está na página 1de 8

Abril de 2016

Guia Bsico para Git


Conceitos e comandos

Izabella Melendez Conigliaro


IOASYS

Guia Bsico para Git

Introduo

Sumrio
Introduo ..................................................................................................................................... 2
Conceitos Principais ...................................................................................................................... 2
Commit ...................................................................................................................................... 2
Mensagem de commit .......................................................................................................... 2
Commit regular ................................................................................................................. 2
Commit de bug .................................................................................................................. 2
Commit WIP (Work In Progress) ....................................................................................... 3
Branch ....................................................................................................................................... 3
.gitignore ................................................................................................................................... 3
Primeiros Passos............................................................................................................................ 4
Lidando com Branches .............................................................................................................. 4
Construindo um Commit ........................................................................................................... 4
Realizando Commit ................................................................................................................... 4
Interao com o Repositrio ..................................................................................................... 5
pull vs. fetch........................................................................................................................... 5
Comandos...................................................................................................................................... 5
Comandos teis ........................................................................................................................ 5
Comandos Mais Complexos ...................................................................................................... 6
RESET ..................................................................................................................................... 6
REBASE .................................................................................................................................. 6
STASH .................................................................................................................................... 6
Conflitos de Merge ........................................................................................................................ 7
Terminal ou Interface? .................................................................................................................. 7
git gui ......................................................................................................................................... 7
Leituras complementares.............................................................................................................. 7
Tutorial ilustrado ....................................................................................................................... 7
Poderes do Git: encontrando commits com bug com o git bisect ............................................ 7

GUIA BSICO PARA GIT

IZABELLA MELENDEZ CONIGLIARO

Guia Bsico para Git

Introduo

Introduo
Git uma ferramenta de versionamento.
Benefcios:

D segurana ao programador para alterar cdigos funcionais e/ou cdigos de


terceiros (no so necessrios comentrios para salvar a verso anterior do
cdigo)
Facilita manuteno

Conceitos Principais
Commit
Unidade de mudana. Deve ser conciso e coeso e, de preferncia, pequeno.
Representa uma verso estvel/compilvel do cdigo.

Mensagem de commit
Constituda pelo ttulo de resumo e por uma mensagem de explicao. O ttulo sempre
deve comear com um verbo no presente do imperativo (ex: Corrige, Implementa,
Cria, Adiciona). A ideia que aquele commit realiza aquela ao.
Commit regular
Ttulo explicando o que foi feito, mensagem citando e/ou justificando todas as
alteraes no cdigo.
Exemplo:
Implementa funo de login na classe LoginActivity.
* Cria mtodos de validao de entrada.
* Adiciona integrao com API.
* Adiciona endpoint em MyApiInterface.java
* Adiciona mensagens de alerta em strings.xml

Commit de bug
Ttulo que resume o bug, mensagem de commit deve explicar 1) o que estava
acontecendo, 2) porque estava acontecendo, 3) como foi corrigido. NUNCA usar algo
como Corrige bug.
Exemplo:
Corrige erro na validao de email no login do usurio.
* Ao tentar realizar o login no aplicativo, o usurio recebia uma mensagem de erro de email
e/ou senha invlidos mesmo quando os dados estavam corretos.
* Em alguns teclados que possuem autocomplete, um espao era adicionado aps o email. Este
espao adicional causava o erro na validao de credenciais.
GUIA BSICO PARA GIT

IZABELLA MELENDEZ CONIGLIARO

Guia Bsico para Git

Conceitos Principais

* Ao adicionar a funo trim() varivel email, o espao adicional retirado e o mesmo pode
ser corretamente validado.

Commit WIP (Work In Progress)


Commit que no apresenta uma unidade de alterao ou verso estvel, mas
interessante salvar o estado do projeto (ex: fim do expediente ou salvar progressos de
implementaes complexas). Commits do tipo WIP NUNCA devem aparecer no branch
master. Utilizar git reset soft <commit> para desfazer esse tipo de commit.
Exemplo:
WIP - integracao de guest list

Branch
Um branch para cada feature ou bug (evitar branches prprios - ex: branch chamado
izabella). O branch local o "playground" do programador, sendo o master uma cpia
de segurana do projeto. A ideia que caso algo errado acontea no branch, o projeto
na ltima verso estvel est salvo no branch master.

.gitignore
Primeiro arquivo alterado quando se cria um repositrio (arquivo j criado por
padro, porm, encontra-se "escondido"/"invisvel"). Indica arquivos que sero
ignorados pelo Git (arquivos j monitorados pelo Git no so afetados). Adiciona-se
todos os arquivos gerados durante compilao.
Para remover um arquivo que j monitorado pelo Git:
git rm <file> atualiza o .gitignore git commit
Exemplo de .gitignore para AndroidStudio:
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
*.iml
/.idea

GUIA BSICO PARA GIT

IZABELLA MELENDEZ CONIGLIARO

Guia Bsico para Git

Primeiros Passos

Primeiros Passos
Lidando com Branches

git branch = apresenta todos os branches locais, destacando o branch atual.


git branch -m "<new_name> = renomeia o branch atual
git checkout -b <name> = cria um novo branch
git branch -d <name> = deleta um branch que j foi mesclado em master
git branch -D <name> = deleta um branch no necessariamente foi mesclado
em master

Observao:

No possvel deletar um branch caso ele seja o branch atual


Ao realizar o merge via bitbucket, o Git no identifica que o branch foi
mesclado, logo, necessrio deletar utilizando a opo -D.

Construindo um Commit

git status = apresenta os arquivos staged (mudanas marcadas), not staged


(mudanas no marcadas) e untracked (no monitorados pelo Git)
git add <file> = marca um arquivo para commit
git add -p <file> = as alteraes dos arquivos so apresentadas em partes,
sendo que o usurio pode adicionar a parte ao commit, descartar a parte para
o commit, ou solicitar que a parte apresentada seja dividida em partes
menores.
git rm <file> = remove o arquivo do Git (o arquivo deixa de ser monitorado)
git reset HEAD <file> = desmarca um arquivo para commit
git checkout -- <file> = descarta as alteraes do arquivo (retorna o arquivo ao
estado do ltimo commit)

Observao:

git add --all (ou -A) = adiciona todos os arquivos (novos, modificados e
deletados)
git add . = adiciona apenas os arquivos novos e modificados
git add -u = adiciona apenas os arquivos modificados

Realizando Commit

git commit -m "<message>" = cria commit apenas com um ttulo de resumo


git commit = abre o editor de texto padro do terminal (geralmente nano, vi,
ou vim, pode ser configurado para outros, como sublime) para que o usurio
possa digitar o ttulo de resumo e a descrio do commit
git commit --amend = emenda os arquivos marcados para commit no commit
diretamente anterior

GUIA BSICO PARA GIT

IZABELLA MELENDEZ CONIGLIARO

Guia Bsico para Git

Interao com o Repositrio

git pull = atualiza o branch local em relao ao branch remoto

Observao:

pull vs. fetch

fetch: baixa e lista todos os commits diferentes entre o branch local e o


remoto. Aps essa lista de commits, possvel realizar um merge em
relao aos commits desejados.
pull: combinao dos comandos fetch e merge. Em um comando, ele baixa
os commits adicionais e mescla no branch em questo.
git merge <branch> = mescla o branch <name> no branch atual
git push = envia todos os branches do repositrio local para o repositrio
remoto
git push origin <branch> = envia apenas o branch em questo para o
repositrio remoto
git push -f origin <branch> = descarta a cpia do branch no repositrio remoto
e salva a verso do repositrio local CUIDADO: sobrescreve a cpia de
segurana

Observao:

SEMPRE realizar git pull antes de git push

Comandos
Comandos teis

git diff -- <file> = apresenta as mudanas ocorridas no arquivo em relao ao


estado do mesmo no ltimo commit quando este ainda no foi marcado para
commit
git diff --cached = apresenta as mudanas de todos os arquivos marcados para
commit em relao ao estado dos mesmos no ltimo commit
git diff <source branch> <target branch> = apresenta as diferenas entre dois
branches
git show <commit> = apresenta todos os arquivos alterados com suas
respectivas mudanas de um commit, alm de informaes como ttulo,
mensagem de commit, data e autor
git log = apresenta uma lista cronolgica de todos os commits (log), junto com
mensagem, descrio e data.
git log --graph --all --decorate --abbrev-commit = apresenta o log de todos os
branches do repositrio local em forma de rvore, sendo cada n um commit
(vlido para analisar onde os branches se divergem e identificar bases)
git reflog = log de todos os comandos Git realizados. Possvel retornar a
qualquer estado do branch antes de realizar um comando (git reset hard

GUIA BSICO PARA GIT

IZABELLA MELENDEZ CONIGLIARO

Guia Bsico para Git

Comandos

<commit>). Essencial para corrigir erros no uso de comandos mais complexos,


como rebase. Isso siginifica que no necessrio ter receio em utilizar as
ferramentas do Git, pois praticamente todos os estados de branch - e
consequentemente arquivos e commits - so recuperveis (git push f origin
<branch> no pode ser desfeito com o uso do git reflog).

Comandos Mais Complexos


Aps comandos complexos, preciso utilizar a opo -f ao realizar um push.

RESET

git reset --soft <commit> = desfaz todos os commits posteriores ao commit


selecionado. Os arquivos alterados so mantidos, sendo possvel refazer os
commits (soluo para apagar um commit do tipo WIP)
git reset --hard <commit> = DELETA todos os commits posteriores ao commit
selecionado, inclusive as alteraes realizadas nestes commits (soluo para
retornar a um estado de branch especifico aps consultar o reflog)

REBASE

git rebase <commit_base> --onto <new_commit_base> = altera a base de um


branch. A base do branch equivale ao primeiro commit que no pertence ao
branch, ou seja, o commit do qual o branch foi criado. A nova base,
geralmente, o commit HEAD de um outro branch (a ponta do branch).
Comando muito utilizado para resolver problemas de conflitos de merge.
git rebase -i HEAD~<number of commits> = apresenta uma lista de um certo
nmero de commits a partir do commit HEAD. Nesta lista, possvel deletar
commits (inclusive suas alteraes), realizar reword, squash e fixup, alm de
alterar a ordem de commits.
Reword: altera a mensagem do commit
Squash: une o commit abaixo com o commit de cima (une inclusive a
mensagem de commit)
Fixup: semelhante ao squash, porm, no une a mensagem de commit
Para alterar a ordem de commits, basta alterar a ordem das linhas

STASH
Para realizar comandos como Reset e Rebase, preciso que o ambiente Git esteja
limpo, ou seja, sem arquivos alterados. Para isso, uma forma simples de "limpar" o
ambiente usando stash, no qual os arquivos so "escondidos" em um branch
temporrio do tipo WIP.
git stash = armazena todas os arquivos alterados (stagged, unstagged e
untracked) em um branch do tipo WIP. Assim, o branch atual est "livre"
desses arquivos (livre para realizar comandos mais complexos)
git stash pop = recupera os arquivos que foram anteriormente stashed, deleta
o branch temporrio

GUIA BSICO PARA GIT

IZABELLA MELENDEZ CONIGLIARO

Guia Bsico para Git

Conflitos de Merge

Conflitos de Merge
Ao ocorrer conflitos de merge, so apresentados no terminal, o nome de todos os
arquivos conflitantes. Deve-se abrir a IDE, resolver os conflitos, e realizar:
git commit (adicionar todos os arquivos corrigidos) e em seguida continuar o
comando que gerou conflito, ex: git merge continue
Para cancelar o comando: git merge --abort

Terminal ou Interface?
git gui
Interface nativa do Git, presente a partir do Git 2.0 (provavelmente preciso atualizar
a verso do Git nas mquinas para acess-lo). Interface simples, apenas para
selecionar arquivos e/ou linhas especficas para facilitar a criao dos commits.
Para abrir a interface, utilizar o comando git gui.
Observao:

O git gui no aceita qualquer tipo de acentuao. Ao tentar inserir um acento,


o programa sofre um crash.

Leituras complementares
Tutorial ilustrado
https://www.atlassian.com/git/tutorials/what-is-version-control

Poderes do Git: encontrando commits com bug com o git bisect


https://git-scm.com/docs/git-bisect
http://webchick.net/node/99

GUIA BSICO PARA GIT

IZABELLA MELENDEZ CONIGLIARO