Gerenciamento de projeto
e versionamento Semântico.
Djanilson Alves | 0xe Hacker Club
GIT
1. Git:
1.1 O que é
1.2 Objetivos
1.3 Porque usar controle de versão
1.4 vantagens
1.5 desvantagens
2. Passos iniciais:
2.1 Instação do GIT
2.2 Configurando git
2.3 Iniciando um repositorio(github)
2.4 Comit Inicial
2.5 Adicionando e enviando arquivos
2.6 Utilizando .gitignore
2
3. Gerenciando seus commits:
3.1 Introduzindo os conceitos de:
- status
- clone
- fetch
- remote
- push e pull
- update
- diff
- reset
3.2 Refazendo commits
3.3 Git Log
4. Gerenciamento de branchs (git flow):
4.1 Git flow
4.2 Gerenciamento de Tags
4.3 Versionamento Semântico
1.
O que é git
3
▹ Você poderá ir e vir entre diferentes
estágios do arquivo.
▹ Vai lhe dar menos dor de cabeça para
gerenciar arquivos.
▹ Geralmente você precisa de um método
backup consistente, quando a equipe é +
de 1.
Porque usar controle de
versão?4
Stage A
Stage B
Stage C
”
Ao usar um sistema de controle de
versão, você tem o poder de lhe dar
com o fluxo de mudanças
acontecendo com seus documentos.
5
2.
Passos iniciais
Por onde começar!?
6
Configurando seu git
git config --global user.name “your full name”
git config --global user.email “your email”
git config -l
*O ultimo comando listará todas as configurações.
7
Configurando seu git
git config --local user.name “your full name”
git config --local user.email “your email”
Global indica um valor global para todos os repositórios
criados no sistema por esse usuário do sistema, enquanto a
configuração local é exatamente o oposto.
8
3.
Gerenciando seus
commits
O que um mago precisa aprender ?
9
Palavras mágicas
Git é um grimório e você precisa usar a
magia certa em cada ocasião.
(Clone, push, pull, add, commit…)
Sempre use git <comando>
10
Iniciando um repositório
git init
Define o diretório atual como um
repositório.
11
Verificando arquivos
git status
Verifica o estado dos arquivos no
repositório atual.
12
Adicionando arquivos
git add <nome>
Verifica o estado dos arquivos no
repositório atual.
13
git add .
git add *.doc
Formas variadas de adicionar arquivos.
*mas cuidado com essas magias, elas
podem adicionar arquivos que talvez
você não queira.
Adicionando arquivos14
.gitignore
Escreva regras e ignore
pastas, arquivos, extensões
Ignorando arquivos15
git reset <filename>
Remove o arquivo da lista que irá para
o commit (STAGED)
Retirando arquivos do STAGED16
git checkout -- <filename.ext>
Remove alterações no arquivo
apontado.
Não queria ter modificado isso !?17
git commit –m "your comments for the
commit"
Envia seus arquivos para o repositório
local com a “mensagem”.
Commitando suas mudanças18
git commit
Abre um editor(vi) de texto para você
escrever o commit
Commitando suas mudanças19
[1] git commit --amend
[2] git commit --amend --no-edit
[1] Abre um editor(vi) para você
reescrever a msg do commit
[2] Apenas coloca os arquivos do
staged junto com o commit
Errei o commit e agora ?
(reescrevendo a historia)20
git reset HEAD^1 [--soft | --mixed| --hard ]
--soft desfaz commit e deixa arquivos em
staged
--mixed desfaz commit e deixa arquivos fora
do staged, mas com as modificações.
--hard desfaz commit e tira arquivos do
staged e desfaz as modificações.
Errei o commit e agora ?
(desfazendo a historia)21
git log
git log --graph
gitk
Um grimório com histórico de ações.
Observando commits22
git log<enter>
Observando commits23
git log<enter>
Observando commits24
git log<enter>
Observando commits25
git log<enter>
Observando commits26
5 primeiros
git checkout <commit ID>
Voltando no tempo27
Voltando no tempo28
Voltando no tempo29
Voltando no tempo30
Voltando no tempo31
5 primeiros
git checkout <commit ID>
Voltando no tempo32
4.
Repositório remote e
local
Seu código na internet
33
Senário 1 - Single Player
Seu game disponível para você apenas
continuar.
34
Senário 1 - Single Player
Seu game disponível para você apenas
continuar.
Sem você precisar começar do zero
toda vez.
35
Git Data Transport36
Git Data Transport37
reset
Senário 2 - Multiplayer
Seu game disponível para você apenas
continuar.
Sem você precisar começar do zero
toda vez.
E você pode chamar outros players
38
Melhor que um
mago, são muitos
magos juntos.
39
“
Melhor que um
mago, são muitos
magos juntos.
40
“
Considere que se você não consegue
seguir para o level seguinte, um amigo
com um build diferente pode fazer isso
para você e depois você continua.
(ou fazer mais rápido)
Superando desafios em grupo41
5.
Branchs
Viagem entre dimensões
42
Dividir para conquistar43
Branchs
Utilizado para criar uma cópia do workspace, com um
novo nome, a fim de trabalhar em uma tarefa
específica.
Pq usar?
Experimento, resolver bugs, separar o que vai ou não
para o cliente, gerenciar tarefas.
Dividir para conquistar44
git checkout -b <name>
Cria uma nova branch com o nome específico.
git branch [-r]
Lista as branchs disponiveis. [-r] exibirá as branch no
ripositório local.
Branchs: Criando e Listando45
git branch -D <nome>
D maiúsculo Deleta a branch localmente.
git branch -d <nome>
D minúsculo Deleta a branch localmente se tiver sido
feito merge com a branch atual.
Branchs: Removendo46
git remote
git clone
git fetch
git push
git pull
5 Novas magias47
git remote <command> <alias> <url>
Git remote48
git remote <command> <alias> <url>
git remote add origin <url>
Git remote49
git remote <command> <alias> <url>
git remote add origin <url>
Esse comando insere um git repository
com uma o nome de origin.
Este habilitará você de usar push & pull
Git remote50
git remote <command> <alias> <url>
git remote add origin <url>
Esse comando insere um git repository
com uma o nome de origin.
Este habilitará você de usar push & pull
Git remote51
git pull <remote>
git pull origin
Ele irá buscar do servidor todas as
modificações e inserir no seu repo local
alterando seu workspace com as
modificações.
‘Catando’ os checkpoints52
git fetch <remote>
git fetch origin
Ele irá buscar do servidor todas as
modificações e inserir no seu repo local.
*Porém não irá modificar seu workspace;
‘Catando’ os checkpoints53
54
reset
6.
Merge - Unindo branches
55
git merge <name>
Une a branch informada com a branch atual.
Unindo branchs56
Quando duas pessoas mudam o mesmo trecho do
arquivo o merge pode dar conflito
Merge CONFLICT57
cat
Dog
Conflito
Merge CONFLICT58
Merge CONFLICT59
Merge CONFLICT60
cat
Dog
cat
cat
Dog
git checkout --theirs
Faz o Merge favorecendo a mudança deles.
git checkout --ours
Faz o Merge favorecendo nossas mudança.
Merge CONFLICT61
git commit
Uma mensagem automática de merge irá ser escrita.
Merge branch 'adicionar-guerreiros'
Resolvendo conflitos de merge62
Mrege resolved63
cat
Dog
6.
Tags e
Versionamento semântico
Criando numeros magicos
64
Criando Tags65
git tag x.x.x
Cria uma nova tag
git push --tag | git push origin x.x.x
Manda as tags para o remote. | manda uma tag para o
remote.
git tag -l
listar as tags
Deletando tags66
git tag -d x.x.x
Deleta a tag localmente
git push --delete origin x.x.x
Deleta a tag no remote.
Versionando Corretamente67
X.Y.Z (major.minor.patch)
1. versão Maior(MAJOR): quando fizer mudanças
incompatíveis e que vai quebrar coisas.
2. versão Menor(MINOR): quando adicionar
funcionalidades mantendo compatibilidade,
3. versão de Correção(PATCH): quando corrigir
falhas mantendo compatibilidade.
Versionando Corretamente68
X.Y.Z (major.minor.patch)
▹ X, Y, e Z são inteiros não negativos
▹ Nunca modifique a versão. Qualquer modificação DEVE ser lançado
como uma nova versão.
(Por exemplo: 1.9.0 -> 1.10.0 -> 1.11.0.)
▹ No início do desenvolvimento, a versão Maior DEVE ser zero (0.y.z).
Qualquer coisa pode mudar a qualquer momento. A API pública não
deve ser considerada estável.
Versionando Corretamente69
x.y.Z (major.minor.patch)
▹ Versão 1.0.0 define a API como pública. A maneira como o número de
versão é incrementado após este lançamento é dependente da API
pública e como ela muda.
▹ Versão de Correção Z (x.y.Z | x > 0) DEVE ser incrementado apenas se
mantiver compatibilidade e introduzir correções de bugs.
▹ Versão Menor Y (x.Y.z | x > 0) DEVE ser incrementada se uma
funcionalidade nova e compatível for introduzida na API pública.
Versionando Corretamente70
x.y.Z (major.minor.patch)
▹ Versão Maior X (X.y.z | X > 0) DEVE ser incrementada se forem
introduzidas mudanças incompatíveis que irá quebrar o que estiver
usando a versão anterior.
▹ Uma versão de Pré-Lançamento (pre-release) PODE ser identificada
adicionando um hífen (dash) e uma série de identificadores separados
por ponto (dot) imediatamente após a versão de Correção.
(Exemplos: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92.)
7.
Git Flow
Gerenciando o fluxo de branchs
71
O qué git flow ?72
GitFlow é um modelo de ramificação para Git.
▹ Desenvolvimento paralelo
▹ Colaboração
▹ Area de Release
▹ Suporte para correções de emergência
Como boa prática
Utilize Issue tracking.73
É um meio de listar as issues presente nos gerenciadores
de repositórios.
▹ Crie uma Issue.
▹ Crie a branch com o numero da issue.
▹ Crie um Merge Request [WIP] com o a branch e o numero da Issue.
▹ Quando terminar o trabalho retire o WIP.
O qué git flow ?74
Duas Branchs com o histórico do repositório
O qué git flow ?75
Novas features nascem da develop e voltam para ela,
Nunca interagem com a master
O qué git flow ?76
Quando estiver tudo pronto para o release, cria-se a
branch de release, integra-se com a master, gerando uma
tag, e a develop.
O qué git flow ?77
Correções urgentes, cria-se a branch hotfix e corrige-se o
erro, manda para develop e faz um novo release e versão.
Referências
git - the simple guide
http://rogerdudler.github.io/git-guide/
Git: Version Control for Everyone
https://git-scm.com/book/en/v2
Git: Version Control for Everyone
https://www.packtpub.com/application-development/git-version-control-everyone
Versionamento Semântico 2.0.0
http://semver.org/lang/pt-BR/
Git Flow
https://leanpub.com/git-flow/read
78
79
OBRIGADO!
djanilson.alves@gmail.com

GIT - Gerenciamento de Projeto e Versionamento Semântico

  • 1.
    Gerenciamento de projeto eversionamento Semântico. Djanilson Alves | 0xe Hacker Club GIT
  • 2.
    1. Git: 1.1 Oque é 1.2 Objetivos 1.3 Porque usar controle de versão 1.4 vantagens 1.5 desvantagens 2. Passos iniciais: 2.1 Instação do GIT 2.2 Configurando git 2.3 Iniciando um repositorio(github) 2.4 Comit Inicial 2.5 Adicionando e enviando arquivos 2.6 Utilizando .gitignore 2 3. Gerenciando seus commits: 3.1 Introduzindo os conceitos de: - status - clone - fetch - remote - push e pull - update - diff - reset 3.2 Refazendo commits 3.3 Git Log 4. Gerenciamento de branchs (git flow): 4.1 Git flow 4.2 Gerenciamento de Tags 4.3 Versionamento Semântico
  • 3.
  • 4.
    ▹ Você poderáir e vir entre diferentes estágios do arquivo. ▹ Vai lhe dar menos dor de cabeça para gerenciar arquivos. ▹ Geralmente você precisa de um método backup consistente, quando a equipe é + de 1. Porque usar controle de versão?4 Stage A Stage B Stage C
  • 5.
    ” Ao usar umsistema de controle de versão, você tem o poder de lhe dar com o fluxo de mudanças acontecendo com seus documentos. 5
  • 6.
  • 7.
    Configurando seu git gitconfig --global user.name “your full name” git config --global user.email “your email” git config -l *O ultimo comando listará todas as configurações. 7
  • 8.
    Configurando seu git gitconfig --local user.name “your full name” git config --local user.email “your email” Global indica um valor global para todos os repositórios criados no sistema por esse usuário do sistema, enquanto a configuração local é exatamente o oposto. 8
  • 9.
    3. Gerenciando seus commits O queum mago precisa aprender ? 9
  • 10.
    Palavras mágicas Git éum grimório e você precisa usar a magia certa em cada ocasião. (Clone, push, pull, add, commit…) Sempre use git <comando> 10
  • 11.
    Iniciando um repositório gitinit Define o diretório atual como um repositório. 11
  • 12.
    Verificando arquivos git status Verificao estado dos arquivos no repositório atual. 12
  • 13.
    Adicionando arquivos git add<nome> Verifica o estado dos arquivos no repositório atual. 13
  • 14.
    git add . gitadd *.doc Formas variadas de adicionar arquivos. *mas cuidado com essas magias, elas podem adicionar arquivos que talvez você não queira. Adicionando arquivos14
  • 15.
    .gitignore Escreva regras eignore pastas, arquivos, extensões Ignorando arquivos15
  • 16.
    git reset <filename> Removeo arquivo da lista que irá para o commit (STAGED) Retirando arquivos do STAGED16
  • 17.
    git checkout --<filename.ext> Remove alterações no arquivo apontado. Não queria ter modificado isso !?17
  • 18.
    git commit –m"your comments for the commit" Envia seus arquivos para o repositório local com a “mensagem”. Commitando suas mudanças18
  • 19.
    git commit Abre umeditor(vi) de texto para você escrever o commit Commitando suas mudanças19
  • 20.
    [1] git commit--amend [2] git commit --amend --no-edit [1] Abre um editor(vi) para você reescrever a msg do commit [2] Apenas coloca os arquivos do staged junto com o commit Errei o commit e agora ? (reescrevendo a historia)20
  • 21.
    git reset HEAD^1[--soft | --mixed| --hard ] --soft desfaz commit e deixa arquivos em staged --mixed desfaz commit e deixa arquivos fora do staged, mas com as modificações. --hard desfaz commit e tira arquivos do staged e desfaz as modificações. Errei o commit e agora ? (desfazendo a historia)21
  • 22.
    git log git log--graph gitk Um grimório com histórico de ações. Observando commits22
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
    5 primeiros git checkout<commit ID> Voltando no tempo27
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
    5 primeiros git checkout<commit ID> Voltando no tempo32
  • 33.
    4. Repositório remote e local Seucódigo na internet 33
  • 34.
    Senário 1 -Single Player Seu game disponível para você apenas continuar. 34
  • 35.
    Senário 1 -Single Player Seu game disponível para você apenas continuar. Sem você precisar começar do zero toda vez. 35
  • 36.
  • 37.
  • 38.
    Senário 2 -Multiplayer Seu game disponível para você apenas continuar. Sem você precisar começar do zero toda vez. E você pode chamar outros players 38
  • 39.
    Melhor que um mago,são muitos magos juntos. 39 “
  • 40.
    Melhor que um mago,são muitos magos juntos. 40 “
  • 41.
    Considere que sevocê não consegue seguir para o level seguinte, um amigo com um build diferente pode fazer isso para você e depois você continua. (ou fazer mais rápido) Superando desafios em grupo41
  • 42.
  • 43.
  • 44.
    Branchs Utilizado para criaruma cópia do workspace, com um novo nome, a fim de trabalhar em uma tarefa específica. Pq usar? Experimento, resolver bugs, separar o que vai ou não para o cliente, gerenciar tarefas. Dividir para conquistar44
  • 45.
    git checkout -b<name> Cria uma nova branch com o nome específico. git branch [-r] Lista as branchs disponiveis. [-r] exibirá as branch no ripositório local. Branchs: Criando e Listando45
  • 46.
    git branch -D<nome> D maiúsculo Deleta a branch localmente. git branch -d <nome> D minúsculo Deleta a branch localmente se tiver sido feito merge com a branch atual. Branchs: Removendo46
  • 47.
    git remote git clone gitfetch git push git pull 5 Novas magias47
  • 48.
    git remote <command><alias> <url> Git remote48
  • 49.
    git remote <command><alias> <url> git remote add origin <url> Git remote49
  • 50.
    git remote <command><alias> <url> git remote add origin <url> Esse comando insere um git repository com uma o nome de origin. Este habilitará você de usar push & pull Git remote50
  • 51.
    git remote <command><alias> <url> git remote add origin <url> Esse comando insere um git repository com uma o nome de origin. Este habilitará você de usar push & pull Git remote51
  • 52.
    git pull <remote> gitpull origin Ele irá buscar do servidor todas as modificações e inserir no seu repo local alterando seu workspace com as modificações. ‘Catando’ os checkpoints52
  • 53.
    git fetch <remote> gitfetch origin Ele irá buscar do servidor todas as modificações e inserir no seu repo local. *Porém não irá modificar seu workspace; ‘Catando’ os checkpoints53
  • 54.
  • 55.
    6. Merge - Unindobranches 55
  • 56.
    git merge <name> Unea branch informada com a branch atual. Unindo branchs56
  • 57.
    Quando duas pessoasmudam o mesmo trecho do arquivo o merge pode dar conflito Merge CONFLICT57 cat Dog Conflito
  • 58.
  • 59.
  • 60.
    Merge CONFLICT60 cat Dog cat cat Dog git checkout--theirs Faz o Merge favorecendo a mudança deles. git checkout --ours Faz o Merge favorecendo nossas mudança.
  • 61.
  • 62.
    git commit Uma mensagemautomática de merge irá ser escrita. Merge branch 'adicionar-guerreiros' Resolvendo conflitos de merge62
  • 63.
  • 64.
  • 65.
    Criando Tags65 git tagx.x.x Cria uma nova tag git push --tag | git push origin x.x.x Manda as tags para o remote. | manda uma tag para o remote. git tag -l listar as tags
  • 66.
    Deletando tags66 git tag-d x.x.x Deleta a tag localmente git push --delete origin x.x.x Deleta a tag no remote.
  • 67.
    Versionando Corretamente67 X.Y.Z (major.minor.patch) 1.versão Maior(MAJOR): quando fizer mudanças incompatíveis e que vai quebrar coisas. 2. versão Menor(MINOR): quando adicionar funcionalidades mantendo compatibilidade, 3. versão de Correção(PATCH): quando corrigir falhas mantendo compatibilidade.
  • 68.
    Versionando Corretamente68 X.Y.Z (major.minor.patch) ▹X, Y, e Z são inteiros não negativos ▹ Nunca modifique a versão. Qualquer modificação DEVE ser lançado como uma nova versão. (Por exemplo: 1.9.0 -> 1.10.0 -> 1.11.0.) ▹ No início do desenvolvimento, a versão Maior DEVE ser zero (0.y.z). Qualquer coisa pode mudar a qualquer momento. A API pública não deve ser considerada estável.
  • 69.
    Versionando Corretamente69 x.y.Z (major.minor.patch) ▹Versão 1.0.0 define a API como pública. A maneira como o número de versão é incrementado após este lançamento é dependente da API pública e como ela muda. ▹ Versão de Correção Z (x.y.Z | x > 0) DEVE ser incrementado apenas se mantiver compatibilidade e introduzir correções de bugs. ▹ Versão Menor Y (x.Y.z | x > 0) DEVE ser incrementada se uma funcionalidade nova e compatível for introduzida na API pública.
  • 70.
    Versionando Corretamente70 x.y.Z (major.minor.patch) ▹Versão Maior X (X.y.z | X > 0) DEVE ser incrementada se forem introduzidas mudanças incompatíveis que irá quebrar o que estiver usando a versão anterior. ▹ Uma versão de Pré-Lançamento (pre-release) PODE ser identificada adicionando um hífen (dash) e uma série de identificadores separados por ponto (dot) imediatamente após a versão de Correção. (Exemplos: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92.)
  • 71.
    7. Git Flow Gerenciando ofluxo de branchs 71
  • 72.
    O qué gitflow ?72 GitFlow é um modelo de ramificação para Git. ▹ Desenvolvimento paralelo ▹ Colaboração ▹ Area de Release ▹ Suporte para correções de emergência
  • 73.
    Como boa prática UtilizeIssue tracking.73 É um meio de listar as issues presente nos gerenciadores de repositórios. ▹ Crie uma Issue. ▹ Crie a branch com o numero da issue. ▹ Crie um Merge Request [WIP] com o a branch e o numero da Issue. ▹ Quando terminar o trabalho retire o WIP.
  • 74.
    O qué gitflow ?74 Duas Branchs com o histórico do repositório
  • 75.
    O qué gitflow ?75 Novas features nascem da develop e voltam para ela, Nunca interagem com a master
  • 76.
    O qué gitflow ?76 Quando estiver tudo pronto para o release, cria-se a branch de release, integra-se com a master, gerando uma tag, e a develop.
  • 77.
    O qué gitflow ?77 Correções urgentes, cria-se a branch hotfix e corrige-se o erro, manda para develop e faz um novo release e versão.
  • 78.
    Referências git - thesimple guide http://rogerdudler.github.io/git-guide/ Git: Version Control for Everyone https://git-scm.com/book/en/v2 Git: Version Control for Everyone https://www.packtpub.com/application-development/git-version-control-everyone Versionamento Semântico 2.0.0 http://semver.org/lang/pt-BR/ Git Flow https://leanpub.com/git-flow/read 78
  • 79.