git: o commit, o fluxo e a tag
TRANSCRIPT
GIT: O Commit, o Fluxo e a TagMétodos para um bom repositório
André Gumieri <[email protected]>
Why, God, WHY!?
1. Bater o olho e já saber de tudo2. Entender os porquês por trás das modificações3. Rollbacks nunca foram tão fáceis4. Padrão = Pensar menos
$ git clone [email protected]:guminidigital/projeto-deus-me-livre.git
A vida depois do clone
$ git branch -a
Em qual branch devo trabalhar?
dev dev_20150513 dev_new joao_dev_2012 fix fix2 homolog_marco_2016* master
$ git log -- arquivo.js
Por que modificaram tal coisa no arquivo.js?
commit 7c8f92ea525af7a5d65cb2f5a4ea20ee75f1575fAuthor: Walter White <[email protected]>Date: Mon Jul 25 19:55:22 2016 -0300
Solicitações cliente
commit 87ba74f4b29cdc61a0a02e75120a0f3d50cca627Author: Jesse Pinkman <[email protected]>Date: Mon Jul 25 19:55:14 2016 -0300
QA
commit ff393e464f5e6bbef30c5674abe17af8385215f7Author: Jesse Pinkman <[email protected]>Date: Mon Jul 25 19:54:36 2016 -0300
.
commit c5e33c6dfa19df5f32d5b129d06d04df9e971041Author: Joey Tribbiani <[email protected]>Date: Mon Jul 25 19:54:28 2016 -0300
Ajustes
commit f84e7dcbbd3da416c8b19e5ddb8b05deb084b57bAuthor: Walter White <[email protected]>Date: Mon Jul 25 19:54:15 2016 -0300
Ajustes na home
$ git tag
Deu ruim! Pra qual versão faço rollback?
teste_tag prod-20120305 prod-20120305-2 tira-jquery
git-flowOrganizando a zona com
• Organiza o ciclo de vida do projeto no GIT • Fica fácil de identificar a situação do repositório • Tem bastante material on-line • Todo mundo usa, recuse imitações
MASTERDEVELOPFEATURES RELEASE HOTFIX
5 TRILHAS PRINCIPAIS
MASTERDEVELOPFEATURES RELEASE HOTFIX
2 FIXAS
MASTERDEVELOPFEATURES RELEASE HOTFIX
3 DE APOIO
MASTERDEVELOPFEATURES RELEASE HOTFIX
- Máquina do DEV- Pequenos recursos- Nasce de develop
- Trilha principal- Sempre a frente
da master- Aqui não se faz commit
- Trilha pré-produção- QA- Ambiente de homolog
- Trilha de produção- Aqui não se faz commit- Ambiente de produção- Sempre com TAG
de versão
- Ajustes da versão em produção
- Nasce da master
MASTERDEVELOPFEATURES RELEASE HOTFIX
create branch
merge nas trilhas fixas
merge de atualização
LEGENDA
1.0.0
1.0.1
1.0.0-rc1
1.0.0-rc2
1.1.0-rc1
1.1.0
1.1.0-rc2
release/1.0.0
release/1.1.0
hotfix
Commit bem formatadoDeixando tudo bonito com um
Fix #123: Altera cor do botão finalizar
Foi adicionada uma classe modificadora .finalizar dentro de .btn
Mensagem
Corpo
corrige cor dos links. remove cores do sass
Texto começa com letra maíuscula. Commits também.
Corrige cor dos links. Remove cores do SASS
Deixar uma linha de espaço entre a mensagem e o corpo. E uma linha de espaço entre parágrafos.
SEPARADÃO TUDO JUNTO
3
2
1
Aqui é só a descrição
E aqui é o ~textão~ que vai explicartintin por tintin o que foi feito nessecommit organizadão!
Aqui tem outro parágrafo! Essa quebra delinha extra aí deixa tudo mais claro.
Aqui é só a descriçãoE aqui é o ~textão~ que vai explicartintin por tintin o que foi feito nessecommit organizadão! Aqui tem outro parágrafo! Essa quebra delinha extra aí deixa tudo mais claro.
Aqui é só a descrição
E aqui é o ~textão~ que vai explicartintin por tintin o que foi feito nessecommit organizadão!
Aqui tem outro parágrafo! Essa quebra delinha extra aí deixa tudo mais claro.
Aqui é só a descriçãoE aqui é o ~textão~ que vai explicartintin por tintin o que foi feito nessecommit organizadão! Aqui tem outro parágrafo! Essa quebra delinha extra aí deixa tudo mais claro.
SEPARADÃOWINS!
O motivo dessa regra pode até parecer frescura de alguém cagando regra, mas a real é que ninguém gosta de ler texto com umas puta linhas longas
Mensagem e corpo devem ser curtos. ~70 caracteres é um bom tamanho. Passou disso, quebra a linha.
O Que, Como e Por quê.Os melhores commits dizem
Por quê precisa deste commit?
O que este commit faz?
Como este commit resolve o problema?
Corrige falhas na home
Durante o desenvolvimento, foram encontradasfalhas graves na home:
- Menu estava desalinhado- Delay do slider estava rápido- Fonte é Futura, não helvetica
O que?
Por quê?
$ git show 9d32dac08c47f52a2b15a2b4298865448efe5bcfdiff --git a/menu.less b/menu.less@@ -129,6 +129,18 @@ .menu{- top: 13px;+ top: 17px; }
diff --git a/slider.js b/slider.js@@ -129,6 +129,18 @@ var confSlider = {- delay: 500;+ delay: 5000; }
diff --git a/base.less b/base.less@@ -129,6 +129,18 @@ body {- font-family: Sans-serif;+ font-family: @font-futura; }
Como?
Fix #123: Altera cor do botão finalizar
Foi adicionada uma classe modificadora .finalizar dentro de .btn
O que?Por quê?
Como?
$ git show 9d32dac08c47f52a2b15a2b4298865448efe5bcfdiff --git a/quem-somos.html b/quem-somos.htmlnew file mode 100644 index 0000000..e9bc1b6--- /dev/null+++ b/quem-somos.html@@ -0,0 +1,10 @@+ <!DOCTYPE html>+ <html>+ <head> + <title>Quem Somos</title>+ </head>+ <body>...+ </body>+ </html>
Por quê?Adiciona página quem somos
O que?
Como?
Implicito. É claro o motivo de estar adicionando uma
nova página
Pensar a mensagem do commité o novo pensar no nome da variável
Deixa eu escrever do meu jeito. Não me enche o saco.
Padrão = Pensar menos.
Precisa ser curto, mas tem que falar tudo.
A mensagem deve ser imperativa. O commit fala o que fazer quando for aplicado.
A mensagem de commit deve completar a frase Quando aplicado, este commit…
... Muda cor dos links
... Torna dinâmica a página de quem somos
... Resolve #123: Quebra de layout nos serviços
... Adiciona página de contato
... Altera a URL de Serviços
... Atualiza o banco de dados
... Corrige tamanho do box de contato
Parece bizarro. Mas o GIT mesmo faz isso: If applied, this commit will…
... Merge branch ‘staging’ into develop
... Revert "Add the thing with the stuff"
Commits em inglês, “pode to be”?
if (openSource || clienteGringo || padraoDoRepo==‘en’) {
lang = ‘en-US’;
} else {
lang = ‘pt-BR’;
}
Tags e versõesMarcando seu lugar no espaço tempo com
• Momentos do repositório. Release, por exemplo. • Padrão semântico: semver.org • Amplamente utilizado ~nas web~ • O favorito do NPM, Bower, GEM, PIP, Composer…
4 2 5. .
4MAJOR MINOR PATCH
2 5. .
4MAJOR MINOR PATCH
2 5. .Mudanças que nãomantém compatibilidade
com a versão anteriorRelease de pacote de features em produção
Correções do softwarejá em produção
2 5.E se eu quiser fazer tag de homologação?
-rc1Conheça o release candidate
$ git push origin 1.0.0-rc1
$ git tag 1.0.0-rc1
Tag no último commit
$ git tag 1.0.0-rc1 f84e7dcbbd3da416c8b19e5ddb8b05deb084b57b
Tag em um commit específico
Assim como branchs, tags são locais
1.1.0-rc1
A tag não se relaciona com o branch, apenas com o commit.
1.0.0
1.0.1
branch-a branch-b branch-c
$ git clone [email protected]:guminidigital/projeto-vem-ni-mim.git
A nova vida depois do clone
$ git branch -a
Em qual branch devo trabalhar?
develop release/1.1.0 hotfix/1.0.1 feature/facelift-menu* master
$ git log -- arquivo.js
Por que modificaram tal coisa no arquivo.js?
commit 7c8f92ea525af7a5d65cb2f5a4ea20ee75f1575fAuthor: Walter White <[email protected]>Date: Mon Jul 25 19:55:22 2016 -0300
Modifica tal coisa que quebrava negócio
Quando negócio se comportava de tal forma, tal coisa gerava incompatibilidade e fazia negócio quebrar.
Tal coisa foi substituido por treco para solucionar o problema.
commit 87ba74f4b29cdc61a0a02e75120a0f3d50cca627Author: Jesse Pinkman <[email protected]>Date: Mon Jul 25 19:55:14 2016 -0300
Fix #123: Cor de tal coisa em vermelho
commit ff393e464f5e6bbef30c5674abe17af8385215f7Author: Jesse Pinkman <[email protected]>Date: Mon Jul 25 19:54:36 2016 -0300
Adiciona tal coisa
$ git tag
Deu ruim! Pra qual versão faço rollback?
1.0.0-rc1 1.0.0-rc2 1.0.0 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.1.3