Git e Gitlab por Samir C Costa Iplanfor

80
1 GIT E GITLAB PARA UM DESENVOLVIMENTO EFICIENTE Criado por @ Samir C. Costa Instituto de Planejamento de Fortaleza

Transcript of Git e Gitlab por Samir C Costa Iplanfor

Page 1: Git e Gitlab por Samir C Costa Iplanfor

1

GIT E GITLABPARA UM DESENVOLVIMENTO

EFICIENTECriado por @ Samir C. Costa Instituto de Planejamento de Fortaleza

Page 2: Git e Gitlab por Samir C Costa Iplanfor

2

SUMÁRIO1. Sobre o Git2. Quem usa Git?3. Por que o Git é tão bom?4. Noções Básicas de Git

1. Teoria2. Branching3. Configuração básica4. Comandos básicos5. Desfazendo 'noobiadas'6. Integrando Branches7. Resolvendo conflitos

5. Git flow6. Entrega contínua de software7. Cultura DevOps8. GitLab Community Edition (CE)9. Exercícios de fixação

10. Referências

Page 3: Git e Gitlab por Samir C Costa Iplanfor

3

SOBRE O

Autor original: Linus TorvaldsRelease inicial: 7 de abril de 2005 (~ 10 anos)Licença: GNU General Public License v2Site oficial: https://git-scm.com

man page descreve Git como "the stupid content tracker"git é uma gíria em inglês britânico para cabeça dura

Page 4: Git e Gitlab por Samir C Costa Iplanfor

4

QUEM USA GIT?

Page 5: Git e Gitlab por Samir C Costa Iplanfor

5

QUEM USA GIT?e...

DISIN[nós]

Page 6: Git e Gitlab por Samir C Costa Iplanfor

6

POR QUE GIT É TÃO BOM?tudo é localé rápidoé pequenodistribuídovários workflowsfácil de aprendergrande comunidade

Page 7: Git e Gitlab por Samir C Costa Iplanfor

7

NOÇÕES BÁSICAS DE

Page 8: Git e Gitlab por Samir C Costa Iplanfor

8 . 1

SNAPSHOTS, E NÃO DIFERENÇAS

Page 9: Git e Gitlab por Samir C Costa Iplanfor

8 . 2

SNAPSHOTS, E NÃO DIFERENÇASsnapshots : captura de algo em um determinado instante,

como em uma foto.

SVN Git

Page 10: Git e Gitlab por Samir C Costa Iplanfor

9

DESCENTRALIZADO, MASCENTRALIZADO

Page 11: Git e Gitlab por Samir C Costa Iplanfor

10

TEM INTEGRIDADEGit usa o hash SHA-1 para fazer o checksumstring de 40 caracteres

caracteres hexadecimais (0-9 e a-f)

$ g i t l o g

c o m m i t c 8 f 4 3 4 7 f 9 d 3 e c d 3 1 1 e 8 9 4 1 c a d 3 c 9 8 0 2 e 7 2 0 3 8 e 8 4 A u t h o r : S a m i r C o s t a < s a m i r . c o u t i n h o @ f o r t a l e z a . c e . g o v . b r > D a t e : T u e F e b 1 6 1 7 : 2 5 : 2 0 2 0 1 6 - 0 3 0 0

b a r r a d e p e s q u i s a o c u l t a d a

Page 12: Git e Gitlab por Samir C Costa Iplanfor

11

PRODUTIVIDADEtem manual de cada comando

$ m a n g i t f e t c h

autocompletamento (TAB)

Page 13: Git e Gitlab por Samir C Costa Iplanfor

1213

OS TRÊS ESTADOS FUNDAMENTAIS

modificado → modified

preparado → staged

consolidado → committed

Page 14: Git e Gitlab por Samir C Costa Iplanfor

14

AS TRÊS SEÇÕES PRINCIPAIS

Page 15: Git e Gitlab por Samir C Costa Iplanfor

15

GLOSSÁRIO ESSENCIAL

HEADrepresenta o snapshot/posição de um branch

ORIGINnome padrão que o Git dá ao servidor de onde você fez oclone

Page 16: Git e Gitlab por Samir C Costa Iplanfor

16

BRANCHé essencialmente uma linha independente dedesenvolvimentoajuda a isolar seu trabalho dos outros membros da equipedesenvolvimento em paralelo sem dores de cabeçacódigo antigo intacto até saber se o novo funcionasempre confira se existe algum commit à frente antes decomeçar a trabalhar

Page 17: Git e Gitlab por Samir C Costa Iplanfor

17

TIPOS DE BRANCH (BRANCHING)Principais

masterdevelop

De apoiofeaturehotfixrelease

Page 18: Git e Gitlab por Samir C Costa Iplanfor

18

BRANCHINGPRINCIPAIS

masterrecebe código de produção provido de uma releasebranchbranch integrada (automatizada com hook)

Page 19: Git e Gitlab por Samir C Costa Iplanfor

19

BRANCHINGPRINCIPAIS

developrecebe código sem erros de sintaxe ou compilaçãooriunto das features branchsnele são executados testes no sistema como um todopara verificar se algum código quebrou outro.

Page 20: Git e Gitlab por Samir C Costa Iplanfor

20

BRANCHINGDE APOIO

featuresempre crie uma antes de iniciar a codificaçãofaça sua arte neste branchfaça commits curtos e frequentesfaça rebase frequentemente para trazer as mudançasdo ramo developramifique ainda maisnormalmente existem apenas nos repositórios dosdesenvolvedorestem vida curtaapague as antigas sem uso

Page 21: Git e Gitlab por Samir C Costa Iplanfor

21

BRANCHINGDE APOIO

hotfixhotfixes surgem da necessidade de agir imediatamentesobre uma situação indesejada na versão de produçãoativapode ser criado a partir da tag correspondente nobranch master que indica a versão em produção

Page 22: Git e Gitlab por Samir C Costa Iplanfor

22

BRANCHINGDE APOIO

releasecada vez que necessite de um merge no master, é umnovo release por definiçãoauxilia a preparação de uma nova versão de produçãopermite correções de bugs menores e a preparação demetadados de uma versão

Page 23: Git e Gitlab por Samir C Costa Iplanfor

23

PORTANTONUNCA commit direto no masterNUNCA commit direto no developsó faça merge neleso ideal quando em equipe: merge request

Page 24: Git e Gitlab por Samir C Costa Iplanfor

24

CONFIGURANDO O GITOnde?

~ / . g i t c o n f i g

Sua identidade

$ g i t c o n f i g - - g l o b a l u s e r . n a m e " P e t e r P e d r o " $ g i t c o n f i g - - g l o b a l u s e r . e m a i l p e t e r . p e d r o @ f o r t a l e z a . c e . g o v . b r

Page 25: Git e Gitlab por Samir C Costa Iplanfor

25

DICA DO CHEFE

Clonando fora da rede da prefeitura

g i t c l o n e h t t p : / / h o s t g i t : 3 2 0 0 0 / i p l a n f o r / s a l a - s e t o r i a l . g i t

Macete do bower

g i t c o n f i g - - g l o b a l u r l . " h t t p s : / / " . i n s t e a d O f g i t : / /

Page 26: Git e Gitlab por Samir C Costa Iplanfor

26

COMANDOS BÁSICOS DO GIT# V a i p a r a o b r a n c h m a s t e r g i t c h e c k o u t m a s t e r

# B a i x a a s ú l t i m a s m o d i f i c a ç õ e s n o p r o j e t o # ( R E M O T E : o r i g i n ) # ( N A M E - O F - B R A N C H : p o d e s e r " m a s t e r " o u u m b r a n c h e x i s t e n t e ) g i t p u l l R E M O T E N A M E - O F - B R A N C H - u

# C r i a u m b r a n c h g i t c h e c k o u t - b N A M E - O F - B R A N C H

# V a i p a r a o b r a n c h r e c é m - c r i a d o g i t c h e c k o u t N A M E - O F - B R A N C H

# V ê a s m u d a n ç a s r e a l i z a d a s g i t s t a t u s

Page 27: Git e Gitlab por Samir C Costa Iplanfor

27

COMANDOS BÁSICOS DO GIT# A d i c i o n a m u d a n ç a s n o s t a g e p a r a ' c o m i t a r ' g i t a d d C H A N G E S g i t c o m m i t - m " D E S C R I B E T H E I N T E N T I O N O F T H E C O M M I T "

# E n v i a a s m u d a n ç a s p a r a o g i t l a b g i t p u s h R E M O T E N A M E - O F - B R A N C H

# D e l e t a t o d a s a s m u d a n ç a s g i t c h e c k o u t .

# D e l e t a t o d a s a s m u d a n ç a s i n c l u s i v e a r q u i v o s n ã o r a s t r e a d o s g i t c l e a n - f

# T r a z a s m u d a n ç a s d o m a s t e r p a r a s u a b r a n c h # v o c ê p r e c i s a e s t a r n o b r a n c h c r i a d o g i t c h e c k o u t N A M E - O F - B R A N C H g i t m e r g e m a s t e r

Page 28: Git e Gitlab por Samir C Costa Iplanfor

28 . 1

CRIANDO UM PROJETO# T r a n s f o r m a o d i r e t ó r i o a t u a l e m u m r e p o s i t ó r i o G i t # P a s t a . g i t é a d i c i o n a d a g i t i n i t

# I n i c i a l i z a u m r e p o s i t ó r i o v a z i o , m a s o m i t e o d i r e t ó r i o d e t r a b a l h o g i t i n i t - - b a r e

OBTENDO UM PROJETOg i t c l o n e < u r l >

Page 29: Git e Gitlab por Samir C Costa Iplanfor

28 . 2

CRIANDO UM PROJETOFLAG BARE

Page 30: Git e Gitlab por Samir C Costa Iplanfor

29

SALVANDO ALTERAÇÕESgit add

# P õ e < f i l e > n o s t a g e g i t a d d < f i l e >

# P õ e < d i r > n o s t a g e g i t a d d < d i r >

# I n t e r a t i v a m e n t e , a d i c i o n a o c o n t e ú d o d a p a s t a a t u a l n o s t a g e g i t a d d - p

Page 31: Git e Gitlab por Samir C Costa Iplanfor

30

SALVANDO ALTERAÇÕESgit commit

# A b r e o e d i t o r p a d r ã o p a r a q u e a m e n s a g e m s e j a e s c r i t a g i t c o m m i t

# N ã o a b r e o e d i t o r e j á p r o c e s s a o c o m m i t g i t c o m m i t - m ' < m e s s a g e m > '

# C o m m i t c o m t o d a s a s a l t e r a ç õ e s r e a l i z a d a s n o d i r e t ó r i o d e t r a b a l h o . # A p e n a s a r q u i v o s r a s t r e a d o s g i t c o m m i t - a

Page 32: Git e Gitlab por Samir C Costa Iplanfor

31

INSPECIONANDO UMREPOSITÓRIO

git status

# O n b r a n c h m a s t e r # C h a n g e s t o b e c o m m i t t e d : # ( u s e " g i t r e s e t H E A D < f i l e > . . . " t o u n s t a g e ) # # m o d i f i e d : h e l l o . p y # # C h a n g e s n o t s t a g e d f o r c o m m i t : # ( u s e " g i t a d d < f i l e > . . . " t o u p d a t e w h a t w i l l b e c o m m i t t e d ) # ( u s e " g i t c h e c k o u t - - < f i l e > . . . " t o d i s c a r d c h a n g e s i n w o r k i n g d i . . . # # m o d i f i e d : m a i n . p y # # U n t r a c k e d f i l e s : # ( u s e " g i t a d d < f i l e > . . . " t o i n c l u d e i n w h a t w i l l b e c o m m i t t e d ) # # h e l l o . p y c

Page 33: Git e Gitlab por Samir C Costa Iplanfor

32

INSPECIONANDO UMREPOSITÓRIO

git status

EXEMPLO# E d i t e i h e l l o . p y

g i t s t a t u s # h e l l o . p y f o i l i s t a d o c o m o " C h a n g e s n o t s t a g e d f o r c o m m i t "

g i t a d d h e l l o . p y

g i t s t a t u s # h e l l o . p y f o i l i s t a d o c o m o " C h a n g e s t o b e c o m m i t t e d "

g i t c o m m i t

g i t s t a t u s # n a d a p a r a c o m m i t ( d i r e t ó r i o d e t r a b a l h o l i m p o )

Page 34: Git e Gitlab por Samir C Costa Iplanfor

33

INSPECIONANDO UMREPOSITÓRIO

git log

# M o s t r a o s ú l t i m o s n c o m m i t s g i t l o g - n < l i m i t >

# M o s t r a u m c o m m i t p o r l i n h a g i t l o g - - o n e l i n e

# F i l t r a c o m m i t s p o r u m p a d r ã o e s p e c í f i c o g i t l o g - - g r e p = " < p a d r a o > "

# F i l t r a c o m m i t s d e u m s n a p s h o t a o u t r o g i t l o g < c o m m i t _ d e s d e > . . < c o m m i t _ a t e >

# M o s t r a l o g a p e n a s d e u m a r q u i v o e m p a r t i c u l a r g i t l o g < f i l e >

# L o g " g r á f i c o " v i s u a l m e n t e b o n i t o ( i n t e r e s s a n t e f a z e r u m a l i a s ) g i t l o g - - g r a p h - - d e c o r a t e - - o n e l i n e

Page 35: Git e Gitlab por Samir C Costa Iplanfor

34

ALIASES$ g i t c o n f i g - - g l o b a l a l i a s . l a s t ' l o g - 1 H E A D '

$ g i t l a s t A u t h o r : S a m i r C o s t a < s a m i r . c o u t i n h o @ f o r t a l e z a . c e . g o v . b r > D a t e : W e d F e b 2 4 1 6 : 5 9 : 5 9 2 0 1 6 - 0 3 0 0

A d d a r q u i v o s o f f l i n e p a r a p l a n o B

Page 36: Git e Gitlab por Samir C Costa Iplanfor

35

TROCANDO DE BRANCH$ g i t c h e c k o u t < n o m e _ d o _ b r a n c h >

mas eu tenho arquivos modificados, como faço?

STASH

Page 37: Git e Gitlab por Samir C Costa Iplanfor

36

STASH$ g i t s t a s h

Page 38: Git e Gitlab por Samir C Costa Iplanfor

37

STASH$ g i t s t a t u s N o r a m o f e a t u r e / i s s u e - 1 C h a n g e s n o t s t a g e d f o r c o m m i t : m o d i f i c a d o : i n d e x . h t m l

$ g i t s t a s h S a v e d w o r k i n g d i r e c t o r y a n d i n d e x s t a t e W I P o n f e a t u r e / i s s u e - 1 . . . H E A D i s n o w a t c 9 3 f b f 1 r e a d m e t w e a k

$ g i t s t a t u s N o r a m o f e a t u r e / i s s u e - 1 Y o u r b r a n c h i s u p - t o - d a t e w i t h ' o r i g i n / f e a t u r e / i s s u e - 1 '

$ g i t s t a s h p o p

Recupera as modificações para seu diretório de trabalho.

Page 39: Git e Gitlab por Samir C Costa Iplanfor

38

DESFAZENDO'NOOBIADAS'

Page 40: Git e Gitlab por Samir C Costa Iplanfor

39

DESFAZENDO 'NOOBIADAS'git commit --amendgit checkoutgit revertgit resetgit clean

Page 41: Git e Gitlab por Samir C Costa Iplanfor

40

DESFAZENDO 'NOOBIADAS'git commit --amend

a maneira conveniente de consertar apenas o commitmais recente.

git commit --amend --no-editutiliza a mesma mensagem de commit do anterior

Page 42: Git e Gitlab por Samir C Costa Iplanfor

41

DESFAZENDO 'NOOBIADAS'git checkout: arquivos • commits • branches

# E s t a d o a t u a l d o b r a n c h e s p e c i f i c a d o g i t c h e c k o u t < b r a n c h >

# V a i p a r a u m a v e r s ã o a n t e r i o r d o a r q u i v o e s p e c i f i c a d o g i t c h e c k o u t < c o m m i t > < f i l e >

# A t u a l i z a t o d o s o s a r q u i v o s p a r a o c o m m i t e s p e c i f i c a d o g i t c h e c k o u t < c o m m i t >

# A t u a l i z a a p e n a s a r q u i v o s c u j o s c a m i n h o s c o n c i d e m c o m < p a t h s > g i t c h e c k o u t - - < p a t h s >

# V a i p a r a a v e r s ã o m a i s r e c e n t e d o a r q u i v o e s p e f i c a d o g i t c h e c k o u t H E A D < f i l e >

Page 43: Git e Gitlab por Samir C Costa Iplanfor

42

DESFAZENDO 'NOOBIADAS'

git revert:

desfaz um único commit com um novo commitnão perde histórico

"seguro"

g i t r e v e r t < c o m m i t >

Page 44: Git e Gitlab por Samir C Costa Iplanfor

43

DESFAZENDO 'NOOBIADAS'git reset:

age principalmente na área de stagepode agir no diretório do trabalho com a flag --hardpode remover commitsdeve ser usado apenas localmente"perigoso"

Page 45: Git e Gitlab por Samir C Costa Iplanfor

44

DESFAZENDO 'NOOBIADAS'git reset

# R e m o v e u m a r q u i v o e s p e c í f i c o d o s t a g e g i t r e s e t < f i l e >

# R e s e t a t u d o n o s t a g e p a r a o c o m m i t m a i s r e c e n t e g i t r e s e t

# R e s e t a t u d o n o s t a g e e d i r e t ó r i o d o t r a b a l h o g i t r e s e t - - h a r d

# M o v e a p o n t a d o b r a n c h a t u a l p a r a < c o m m i t > e r e s e t a o s t a g e g i t r e s e t < c o m m i t >

# M e s m o q u e o a n t e r i o r , m a s r e s e t a s t a g e e d i r e t ó r i o d e t r a b a l h o g i t r e s e t - - h a r d < c o m m i t >

Page 46: Git e Gitlab por Samir C Costa Iplanfor

45

DESFAZENDO 'NOOBIADAS'

Page 47: Git e Gitlab por Samir C Costa Iplanfor

46

DESFAZENDO 'NOOBIADAS'git revert

EXEMPLO # E d i t e i a l g u n s a r q u i v o s r a s t r e a d o s

# F i z u m c o m m i t g i t c o m m i t - m " F i z a l g u m a s a l t e r a ç õ e s q u e s e r ã o d e s f e i t a s "

# R e v e r t o c o m m i t q u e a c a b e i d e c r i a r g i t r e v e r t H E A D

Page 48: Git e Gitlab por Samir C Costa Iplanfor

47

DESFAZENDO 'NOOBIADAS'git revert

EXEMPLO

Page 49: Git e Gitlab por Samir C Costa Iplanfor

48

DESFAZENDO 'NOOBIADAS'git clean

remove arquivos não rastreados do seu diretório detrabalho

# " d r y - r u n " d o g i t c l e a n g i t c l e a n - n

# R e m o v e a r q u i v o s n ã o r a s t r e a d o s d o d i r e t ó r i o a t u a l . # N ã o r e m o v e p a s t a s e i t e n s d o . g i t i g n o r e g i t c l e a n - f

# O m e s m o q u e o a n t e r i o r , m a s l i m i t a d o a o c a m i n h o e s p e c i f i c a d o g i t c l e a n - f < p a t h >

# R e m o v e a r q u i v o s e p a s t a s n ã o r a s t r e a d a s d o d i r e t ó r i o l o c a l g i t c l e a n - d f

# R e m o v e t o d o s o s a r q u i v o s n ã o r a s t r e a d o s a s s i m c o m o o s # e s p e c i f i c a d o s n o . g i t i g n o r e g i t c l e a n - x f

Page 50: Git e Gitlab por Samir C Costa Iplanfor

49

DESFAZENDO 'NOOBIADAS'git clean

EXEMPLO# E d i t e i a l g u n s a r q u i v o s e x i s t e n t e s # A d i c i o n e i a l g u n s a r q u i v o s n o v o s # P e r c e b i q u e n ã o t i n h a i d e i a d o q u e e s t o u f a z e n d o

# D e s f i z a s a l t e r a ç õ e s n o s a r q u i v o s r a s t r e a d o s g i t r e s e t - - h a r d

# R e m o v i t u d o q u e n ã o e s t a v a r a s t r e a d og i t c l e a n - d f

Page 51: Git e Gitlab por Samir C Costa Iplanfor

50

INTEGRANDO BRANCHES

MERGE FAST-FORWARD@ ( m a s t e r ) $ g i t m e r g e b u g f i x

Page 52: Git e Gitlab por Samir C Costa Iplanfor

51

INTEGRANDO BRANCHES

MERGESEM FAST-FORWARD

@ ( m a s t e r ) $ g i t m e r g e - - n o - f f b u g f i x

Page 53: Git e Gitlab por Samir C Costa Iplanfor

52

MERGEPRÓS

fácil de entendercommits do ramo fonte permanecem separados doscommits do outro ramo

bom para feature branchescommits existentes do ramo fonte ficam intactos e válidos

CONTRAS

se a necessidade de merge surge simplesmente porquevárias pessoas estão trabalhando em do mesmo ramo emparalelo, o histórico pode criar uma confusão.

Page 54: Git e Gitlab por Samir C Costa Iplanfor

53

REBASEgit rebase -i ⇒ squash

juntar, combinar múltiplos commits em ume reordená-los.

Page 55: Git e Gitlab por Samir C Costa Iplanfor

54

REBASEPRÓS

simplifica o históricoé a maneira mais intuitiva e livre de confusão paracombinar commits de múltiplos desenvolvedores em umramo compartilhado

CONTRAS

um pouco mais complexo, especialmente sob conflito decódigo

cada commit é feito rebase em ordema cada conflito, este processo é interrompido

a reescrita do histórico tem ramificações se você fez pushdaqueles commits anteriormente em outro lugar

Page 56: Git e Gitlab por Samir C Costa Iplanfor

55

REGRA DE OURO

NUNCAFAÇA REBASE DE UM RAMO QUE

VOCÊ FEZ:push oupull (fetch + merge) do trabalho de uma outra pessoa

Page 57: Git e Gitlab por Samir C Costa Iplanfor

56

MERGE X REBASEMerge preserva o histórico de commitsRebase reescreve o histórico de commits

Page 58: Git e Gitlab por Samir C Costa Iplanfor

57

ESTRATÉGIASuse SEMPRE feature branches para codificarsempre crie commits atômicosprefira utilizar o faça rebase para evitar/solucionar conflitos

git flow

Page 59: Git e Gitlab por Samir C Costa Iplanfor

58

RESOLVENDO CONFLITOS

git difffeio e trabalhoso

$ g i t d i f f - - c a c h e d d i f f - - g i t a / R E A D M E b / R E A D M E i n d e x b c c d f b d . . b 0 e d 4 1 5 1 0 0 6 4 4 - - - a / R E A D M E + + + b / R E A D M E @ @ - 1 + 1 , 2 @ @ T h i s i s t h e R E A D M E f i l e . + O n e m o r e l i n e .

# E d i t a r e s a l v a r o s a r q u i v o s u m p o r u m # A d d n o s t a g e e c o m m i t

Page 60: Git e Gitlab por Samir C Costa Iplanfor

59

RESOLVENDO CONFLITOS

bonito e produtivomenos dolorosotem instalador para o sistemaoperacional proprietário daMicrosoft

MELDs u d o a p t - g e t i n s t a l l m e l d

g i t m e r g e t o o l - t m e l d

m e l d a r q 1 a r q 2

Page 61: Git e Gitlab por Samir C Costa Iplanfor

60

GIT CHEAT SHEET

https://duckduckgo.com/?q=git+cheat+sheet&ia=cheatsheet&iax=1

Page 62: Git e Gitlab por Samir C Costa Iplanfor

61 . 1

GIT FLOWmodelo de Vincent Driessen

Page 63: Git e Gitlab por Samir C Costa Iplanfor

61 . 2

GIT FLOWmodelo de Vincent Driessen original

Page 65: Git e Gitlab por Samir C Costa Iplanfor

62

ENTREGA CONTÍNUA DESOFTWARE

Poder lançar um release para produção a qualquermomento.Software ser implantável ao longo do seu ciclo de vidaEquipe priorizar manter implantável ao trabalhar emnovas featuresPoder obter feedback rápido e automatizado sobre osistema em produçãoPoder implantar qualquer versão de forma simples aqualquer ambiente sob demanda

Page 66: Git e Gitlab por Samir C Costa Iplanfor

63

ENTREGA CONTÍNUA DE SOFTWARE

VANTAGENSrisco de implantação reduzido

pequenas mudançasmenor chance de dar erradofacilidade de conserto

progresso mais críveltrabalho concluído tangível em produção

feedback do usuário

Page 67: Git e Gitlab por Samir C Costa Iplanfor

64

CULTURA DEVOPSaumentar a colaboração entre desenvolvimento eoperaçõescompartilhar responsabilidadesequipe autônomaqualidade no processo de desenvolvimento

performancesegurança

feedback contínuoautomação

testesconfiguraçãoimplantação

Page 68: Git e Gitlab por Samir C Costa Iplanfor

65

COMMUNITY EDITION (CE)

Page 69: Git e Gitlab por Samir C Costa Iplanfor

65

66

GITLAB CECódigo-fonte aberto (licença MIT)Escalável: suporta 25.000 usuários em um servidor eclusterizaçãoStream de atividadeFile browserGit powered wiki com markdown GitLab FlavoredMarkdown (GFM)

Page 70: Git e Gitlab por Samir C Costa Iplanfor

67

GITLAB CEIntegração e entrega contínuaGerenciador de issuesSnippetsWeb hooksRevisor de código

Merge-request com comentários linha por linha

Page 71: Git e Gitlab por Samir C Costa Iplanfor

68 . 1

GITLAB CELINKANDO E FECHANDO ISSUES COM COMMITS OU

MERGE REQUESTS

1. mencionar a issue na mensagem do commit ou descriçãodo merge request

fixes #14 • fix #14 • fixed #14 • fixing #14closes #67 • close #67 • closed #67 • closing #67

2. A issue será fechada automaticamente quando o commitestiver no branch principal (master).

EXEMPLOg i t c o m m i t - m " A w e s o m e c o m m i t m e s s a g e \ ( F i x # 2 0 , F i x e s # 2 1 a n d C l o s e s g r o u p / o t h e r p r o j e c t # 2 2 ) . \ T h i s c o m m i t i s a l s o r e l a t e d t o # 1 7 a n d f i x e s # 1 8 , # 1 9 \ a n d h t t p s : / / g i t l a b . e x a m p l e . c o m / g r o u p / o t h e r p r o j e c t / i s s u e s / 2 3 . "

Page 72: Git e Gitlab por Samir C Costa Iplanfor

68 . 2

GITLAB CELINKANDO E FECHANDO ISSUES COM COMMITS OU

MERGE REQUESTS

Page 73: Git e Gitlab por Samir C Costa Iplanfor

69

GITLAB CEMILESTONES

permite agrupar issues e definir prazos

Page 74: Git e Gitlab por Samir C Costa Iplanfor

70 . 1

GITLAB CE

Page 75: Git e Gitlab por Samir C Costa Iplanfor

70 . 2

GITLAB CELABELS

bugconfirmedcriticaldiscussiondocumentationenhancementsuggestionsupporttaskwip

Page 76: Git e Gitlab por Samir C Costa Iplanfor

71

GITLAB CENETWORK

Page 77: Git e Gitlab por Samir C Costa Iplanfor

72

EXERCÍCIOS DE FIXAÇÃO - Git do zero

- aprenda os poderosos conceitos portrás do branching com o git.

Try GitLearn Git Branching

Page 78: Git e Gitlab por Samir C Costa Iplanfor

73

REFERÊNCIAS Vincent Driessen. Janeiro de

2010. Daniel Kummer. Agosto de 2012.

Martin Fowler. Maio de 2013. Alex Tercete. Julho de 2014.

Steve. Agosto de 2012. Sytse Sijbrandij. Setembro de 2014.

Lemi Orhan. Novembro de 2012. Scott Chacon e Ben Straub. 2014.

Atlassian. GitLab Inc e comunidade.

A successful Git branching model.

Cheatsheet do git-flow.Continuous Delivery.Como usamos o Git Rebase.Merge or Rebase?Gitlab Flow.Git Branching Model.Livro Pro Git 2ª edição.Become a git guru.GitLab Documentation.

Page 79: Git e Gitlab por Samir C Costa Iplanfor

74

"No que diz respeito ao empenho, aocompromisso, ao esforço, à dedicação, nãoexiste meio termo. Ou você faz uma coisa

bem feita ou não faz."

Ayrton Senna

Page 80: Git e Gitlab por Samir C Costa Iplanfor

74

75

FIMApresentação feita com     + reveal.js