Este documento apresenta uma introdução ao sistema de controle de versão Git, incluindo instruções sobre como instalá-lo, configurá-lo e usar alguns de seus principais comandos.
5. o que é git ?
visão abrangente
instalando o git
ambiente configurado
git that like a boss
NOSSA AGENDA
comandos no git
trabalhando localmente
repositórios no git
trabalhando em time
repositórios no github
trabalhando online
HACKATHON
6. 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/
8. git that like a boss
O QUE É GIT?
branching
offLine
distribuido
enxuto
9. de
er
az cê
l f vo
íve ue
ss q
po o
, é esm
in e , m
fl g
of in
ou mit
e m
e.
lin co
ed
r
on g,
o in
ma
ad erg
hu
us m
en
er g,
an
s in
do
de ch
ta
po ran
ec
it b
G o,
on
c
d steja
tu e
ão
n
f
f
o
e
in
L
10. ou
iar eja
nv , s
l e os
íve ot
ss em
po r
tra
é ios
ou
e
ed itór lquer
r s
ua epo qua
s r
a s
de
na tro
or ou
ou
t
re de
do
cê es
iza
al
vo çõ
tr
e a
en
qu rm
im nfo
oc
s i
ri
itó
As ar
os
a ix m rep
b u
ele soa.
es
p
D
IB
R
T
IS
O
ID
U
11. de e
ma te d
te en
sis ar
no nsp scla,
es tra
me
çõ o
ra nt
o,
e ju
p n
çã
o o
ria
s c
c
ua m
s u
ua
s
ta do
a
en in
ra
m uz
pa
da od
un pr
es .
f ,
it s
ad os
g e
ilid utr
O nch
ac o
f e
ra ões e ntr
b ç
,e
fun carte
es
d
R
B
G
IN
H
C
N
A
12. ps
n wcpro
.
.sv all|-- |-i es
ntr at
|
- e rm
|- fo
ase
|
- rop-b
|- p
|
ase
- rops se
|- p
n-b
|
-ba file.sv
|- text ke
|
|-- |-- Ra
|
|
fil e
|
ake
ops
|.. R ib
.
.rb ay.rb
.git efile
n wcpr
gle rr
|.. l |-- .sv all|-- Rak
rian d_a ec
t
-- ntries
|
|
|- ib
als_ rinte emsp
|
l
sc _p
- e rmat
|- fo
|
|-- -- pa tty
e .g
|
|
e riangl
r t
|-|
| -- p _
|
|
ls
|
|
sca
a
-- p
|
rio
tó
ire de
d
um ade
as b il id s e
en si
ap os
me
uí u p
no
s o
os e
de
it p dad nças
g i
, o ess
da
N c
u
V ne
m
S
o em
om
c
ed ,s
te
nt to
e je
en
tem pro tivam
en o
ga
fer iz d
i
D ra
ne
do
na afeta
er s.
s ta
as
p
N
E
O
T
U
X
13. git that like a boss
INSTALANDO O GIT
macosx
download
windows
git config
14. eu s
s e
em dad
do cali
iza lo
til is
o
u a
ra
al m
pa
on ou
ci a
ad
a
er um
n lo
op o
ow
ma stirã tas d
te xi
sis o e
fei
do alh erem
do rab a s
en e t
nd d
es it.
e e
çõ g
ep nt
D ie
ta do
b lemen to
a m mp
en
i
u ionam
o c
un
f
N
W
O
D
D
A
LO
15. DOWNLOAD
1. Acessar http://msysgit.github.io;
2. Selecionar a opção
Downloads;
Para o windows
Faça o download do instalador a
partir da pagina Google Code a baixo:
http://msysgit.github.io/
3. Selecionar a última versão
disponível;
4. Selecionar novamente
a versão previamente
escolhida para começar o
download.
16. DOWNLOAD
1. Acessar http://git-scm.com/download;
2. Escolha a opção para download Linux;
Para o linux
Você 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
3. Escolha a opção indicada
para a sua distribuição.
17. DOWNLOAD
1. Acessar http://code.google.com/p/git-osxinstaller/;
Para o macOSX
Você 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-osxinstaller
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.
18. to s
oje a i
pr m
l. O ação
ci al
fá st
ito e in
u d
é m os
ws ent
do dim
in e
o W proc
tn s
Gi do
o m
do u
an tem
al it
st G
In s
sy
m il.
ác
f
W
D
IN
S
W
O
20. WINDOWS
Select Components
Marque 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
25. x,
os
ac mo
m o
no s c
it te
o g aco
lar e p
ta d
ins res
de do
as cia
eir ren
an ge
m
k.
as lvem u Fin
um vo
o
lg en
a
rts
em pa is acPo
ist ci
Ex prin w, M
s eBre
a m
o
H
X
S
O
C
A
M
26. MACOSX
Instalando com Brew
Tendo o brew instalado você só precisa
fazer:
Se você ainda não usa homebrew para
gerenciar pacotes no Mac OS, então eu
recomendo instalá-lo.
➜ ~ brew install git
27. MACOSX
Onde foi instalado
Depois de instalado você deve conseguir
ver onde o mesmo foi instalado, rodando
o comando:
➜ ~ which git
/usr/bin/git
28. MACOSX
Qual versão instalada
Após instalado é possível conferir a
qualquer momento a versão do git.
➜ ~ git --version
git version 1.7.12.4 (Apple
Git-37)
30. GIT CONFIG
Adicionando config
Caso 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"
31. git that like a boss
COMaNDOS NO GIT
tag
novo projeto
status
log
adicionando
comitando
33. D
EA ches
H n
ple
─ bra g
─
.samle
fi tion
g
├ ─ con ip
ms mp
├─ ─ descr s
ch- g.sa ple
─
k plypat -ms am ple
├ ─ hoo p
s
─
a
mit date. ch.sam e
├ ─ ─ om p
─ ─
c t-u ypat mpl
ple
├ ├ ─ os
p -appl mit.sa mple sg.sam
─
│ ├ ─ re
p -com se.sa it-m
─
│ ├ ─ re
p -reba comm
─
│ ├ ─ re
p pare- ample
─
│ ├ ─ re
p ate.s
─
│ ├ ─ pd
│ ├─ ─ u
e
─ fo
lud
│ └ in
exc
│ ─ ─ ts
├─ └─objec nfo
│ ─ ─ i ack
├─ ├─ ─ p
│ └─refs ds
hea s
│ ─
└─ ── tag
├ ─
└─
os
uiv no
rq it
e a t in
d i
rio ar g
etó cut
dir xe
um te e
de en
rio esm
itó pl
os sim
ep e
r d
um po
iar ocê
cr , v
ra te
Pa ten
is rio
ex tó
ire
d
N
O
V
O
P
E
R
IO
R
Ó
IT
S
O
34. 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 ls
README.md
35. NOVO REPOSITÓRIO
Criando o repositório
Para iniciar o controle de versão disso
com Git, podemos simplesmente
executar git init, como:
➜ ~ git init
Initialized empty Git
repository in /Users/
helmed/rbsdev/.git/
37. ed
ck
tra
Un
ked
rac
t
to
en
am
ion do
rs na
ve mi
o er
be det
so m
os u
uiv em
rq as
sa m
s o dor
to ta
en pu
om om
m c
os seu ele?
uit o
m n
rá
m ão
se
E r
al
sta o, qu
e d
sta
e
S
U
T
A
T
S
38. STATUS
➜ gitlikeaboss git 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:
# 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.md
nothing added to commit but
untracked files present (use "git
add" to track)
40. ed
ck
tra
Un
ked
rac
t
o
be nte o
so me
os m
os
iv e
ad
qu re
a r mp
tre
m se
as
r
co er
ão
o
nd ue t de n
lha s q
do
ba o
ra tem
an
t
ss
s it,
o g
pa
am do
t
os
es to
sm
do en
me
an am
u n
os
d
Q io
s e vida os.
er d
v o
ad
l
re
cic a rast
ar
p
A
N
IO
IC
D
A
O
D
N
41. 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
42. ADICIONANDO
➜ gitlikeaboss git add .
➜ gitlikeaboss git status
Várias formas de adição
Para adicionar arquivos em um commit,
é necessário executar um comando que
insira ele no commit:
# 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
44. 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
45. d
e
ck
a
ntr
U
d
tr
e
ck
a
a
20
b1
c1
1
06
29
2a
m>
80
co
3a
b0 os ail. 2013
it
d5 ir gm
7
mm
73
co
b0 Mede ros@ 28:3
7
4a io dei 12:
e
46 Hel lme 20
43
3d or: abra Oct
f h
c
t
Au lio. Sun
e
<h e:
t
Da 200
o
-0
it
Fe
irá
te
en
elm
av
ov
pr
ê
ged
sta
G
O
L
oc
,v
its
m
om
c
ios eu.
ár ec
v t
de con
ois e a
ep qu
D o
er
v
er
er
qu
46. 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 log
commit
e1cf3d4346e4a7b073d5b03a8020a
b1c1061292a
Author: Helio Medeiros
<helio.cabralmedeiros@gmail.c
om>
Date:
Sun Oct 20 12:28:37
2013 -0200
Feito
47. 2.0
.0
1
os
nt
po
ar
alv io,
e s itór
e d os
ad rep
l id
na um
cio de
un ia
f r
i a istó
su h
os na
t p os
Gi ic
O cíf
pe
es
G
A
T
48. TAG
Criando TAGS
Normalmente 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"
49. TAG
Listando as TAGS
Para visualizar as tags existentes no
repositório, basta executar o comando
➜ likeaboss git tag
v1.0
50. TAG
Alternando entre tags
Em 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
51. git that like a boss
BRANCHING NO GIT
removendo
o que são branchs
novo branch
conflitos
52. er
ast
M
o,
jet
ro t é
p
do o Gi
iro o n
te rã
n d
s,
õe
po pa
aç
m h
u
fic
te ranc rami
en b
sm . O rsas lo.
ple vos
im u i
ive arale
s q
d p
é ar
it s
em do
G o
rg n
su mu
no os
ch tod deste m
an m
br té
ir . É u
rt es
m on
U c
pa ch
e ter, a ran
qu as
b
m ários
o v
to
is
R
B
H
C
N
A
53. NOVO BRANCH
Um 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 novafuncionalidade
➜ likeaboss git
branch
* master
nova-funcionalidade
Selecionando o branch
➜ likeaboss git checkout
nova-funcionalidade
Switched to branch 'novafuncionalidade'
54. Diferença
➜ gitlikeboss ls
Master intocado
Perceba 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:
.gitignore
1/1a.txt
README
mnb.sh
oba.sh
rbsdev.sh
senha.sh
➜ gitlikeboss git
checkout master
Switched to branch 'master'
➜ gitlikeboss git lsfiles
.gitignore
1/1a.txt
README
oba.sh
rbsdev.sh
senha.sh
55. 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”
56. 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 novafuncionalidade:
➜ gitlikeboss ls
README.md
CHANGE.md
➜ gitlikeboss git
checkout master
Switched to branch 'master'
➜ gitlikeboss ls
README.md
CHANGE.md
57. merge
Mesclando as alterações
Apó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 master
Switched to branch 'master'
➜ gitlikeboss git merge
nova-funcionalidade
➜ gitlikeboss ls
README.md
CHANGE.md
58. removendo
➜ gitlikeboss git branch
master
* nova-funcionalidade
Removendo
Apó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
--delete novafuncionalidade
error: Cannot delete the branch 'novafuncionalidade' which you are currently
on.
➜ gitlikeboss git
checkout
master
Switched to branch 'master'
➜ gitlikeboss git branch
--delete novafuncionalidade
Deleted branch teste (was 27478a1).
59. COnflitos
Merge com conflitos
Em 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-conflito
Auto-merging arquivo.txt
CONFLICT (content): Merge conflict
in README.md
Automatic merge failed; fix
conflicts and then commit the
result.
➜ gitlikeboss git commit
-m “Conflito resolvido”
60. Fontes:
Pro Git - Scott Chacon
Obrigado!
@evandroeisinger
@helmedeiros
@rssilva
http://try.github.io
http://nathanj.github.io
http://gitready.com/
Imagens:
http://git-scm.com/