SlideShare uma empresa Scribd logo
1 de 16
Baixar para ler offline
COMMIT 
COMO, QUANDO E POR QUE? 
By @viniciusban
um commit deve 
● Confirmar uma única unidade de trabalho 
● Descrever o que foi feito 
● Descrever por que foi feito 
● Fazer parte de um contexto (histórico)
Escreva suas mensagens de 
commit como se um psicopata 
que sabe onde você mora fosse 
lê-las.
recomendações 
● Commit com frequência 
● Descreva apenas uma unidade de trabalho 
● Dezenas ao dia 
● Conte uma história 
● Insira referências (tickets, outros commits e 
materiais de recomendação)
commits bons e ruins (1) 
Conserta o header 
(ao ser aceito, esse commit irá) 
Mudar o ID css do titulo do header que ficava 
escondido por baixo da imagem
commits bons e ruins (2) 
Conserta o header (2) 
(ao ser aceito, esse commit irá) 
Incluir o novo arquivo header.css que eu 
esqueci no commit anterior 
Dica: use git commit --amend para essa situação
commits bons e ruins (3) 
Ajusta header com js 
(ao ser aceito, esse commit irá) 
Ajustar o header com js ao inves de apenas 
CSS... 
- Closes #284
commit ótimo 
(Ao ser aceito, esse commit irá...) 
Corrigir bug q impede usuario de se inscrever... 
Os usuarios sao impedidos de se registrar se nao 
visitaram antes a pagina de planos e precos. 
Contavamos que a informacao de trilha existiria para os 
logs que criamos depois que um usuario se registrava. 
Corrigi, fazendo o logger so gravar se essa informacao 
estiver disponivel. 
- Closes #2873942 http://sistema-de-demandas/ticket 
- O commit d2438a2 tentou corrigir, mas falhou.
dicas (parte 1) 
● 1ª linha do commit 
– É o assunto, como num email, com 50 
caracteres. 
– Abrevie com bom senso. 
– Termine com “...” se houver corpo da 
mensagem 
– Deixe uma linha em branco depois dela.
dicas (parte 2) 
● Adote um padrão para commits padrão 
– “pep8”, “identar”, “organizar fonte” 
– “Criar crud clientes” (só se for gerado 
automaticamente) 
● Não ache um padrão aonde não existe: 
– Refatoração 
– Renomear variáveis, métodos, funções.
problemas 
● PROBLEMAS 
– Não consigo resumir o que eu fiz em apenas 50 
caracteres 
– O resumo do commit tem a conjunção "e" 
● SUGESTÃO 
– Diminua a unidade de trabalho. 
– git add -p ajuda a identificar as unidades lógicas 
e a quebrar o commit. 
– Não misture mexida de identação, por exemplo, 
com alterações funcionais no mesmo commit.
problemas 
● PROBLEMAS 
– Quando lembro de commitar, já mexi em um 
monte de coisa 
● SUGESTÃO 
– Defina objetivos antes de começar a codificar. 
– Faça uma lista de TO-DO no próprio programa.
problemas 
● PROBLEMAS 
– Commitar toda hora é chato e cansativo 
● SUGESTÃO 
– Pense que cada commit ajuda a contar a história 
do que você está fazendo no sistema. 
– Imagine você dando um git log daqui a 6 meses. 
O histórico que você está criando te ajudará a 
descobrir um bug ou a entender uma opção de 
projeto?
problemas 
● PROBLEMAS 
– Eu não acho necessário descrever tudo o que fiz 
● SUGESTÃO 
– Imagine que a mensagem de commit é um email 
que você só vai ler daqui a 6 meses. Você 
entenderia o que foi feito lendo essa mensagem?
referências 
● https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_GIT_comm 
it_message_structure 
● http://chris.beams.io/posts/git-commit/ 
● http://www.slideshare.net/TarinGamberini/commit-messages-goodpractices 
● http://ablogaboutcode.com/2011/03/23/proper-git-commit-messages-and-an- 
elegant-git-history/ 
● https://github.com/blog/926-shiny-new-commit-styles 
● http://robots.thoughtbot.com/5-useful-tips-for-a-better-commit-message 
● https://gitlab.com/help/markdown/markdown.md#special-gitlab-references 
(só acessa logado)

Mais conteúdo relacionado

Mais procurados

Devshare - Automatizando tarefas de javascript com GruntJS
Devshare  - Automatizando tarefas de javascript com GruntJSDevshare  - Automatizando tarefas de javascript com GruntJS
Devshare - Automatizando tarefas de javascript com GruntJSRafael Lyra
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panosLaís Lima
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de djangoFilipe Ximenes
 
PHP de alta performance com RoadRunner
PHP de alta performance com RoadRunnerPHP de alta performance com RoadRunner
PHP de alta performance com RoadRunnerLeonardo Tumadjian
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenterPaulino Michelazzo
 
Como tratar múltiplos JSONps com o mesmo callback name? - FloripaJS
Como tratar múltiplos JSONps com o mesmo callback name? - FloripaJSComo tratar múltiplos JSONps com o mesmo callback name? - FloripaJS
Como tratar múltiplos JSONps com o mesmo callback name? - FloripaJSVinicius Kiatkoski Neves
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVinícius Krolow
 
Tunning da jvm dos comandos às configurações
Tunning da jvm  dos comandos às configuraçõesTunning da jvm  dos comandos às configurações
Tunning da jvm dos comandos às configuraçõesLuan Cestari
 

Mais procurados (12)

Trabalhando com Logs no PostgreSQL
Trabalhando com Logs no PostgreSQLTrabalhando com Logs no PostgreSQL
Trabalhando com Logs no PostgreSQL
 
Devshare - Automatizando tarefas de javascript com GruntJS
Devshare  - Automatizando tarefas de javascript com GruntJSDevshare  - Automatizando tarefas de javascript com GruntJS
Devshare - Automatizando tarefas de javascript com GruntJS
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
Como fazer boas libs
Como fazer boas libs Como fazer boas libs
Como fazer boas libs
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de django
 
Oracle x PostgreSQL
Oracle x PostgreSQLOracle x PostgreSQL
Oracle x PostgreSQL
 
PHP de alta performance com RoadRunner
PHP de alta performance com RoadRunnerPHP de alta performance com RoadRunner
PHP de alta performance com RoadRunner
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenter
 
Como tratar múltiplos JSONps com o mesmo callback name? - FloripaJS
Como tratar múltiplos JSONps com o mesmo callback name? - FloripaJSComo tratar múltiplos JSONps com o mesmo callback name? - FloripaJS
Como tratar múltiplos JSONps com o mesmo callback name? - FloripaJS
 
Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
Tunning da jvm dos comandos às configurações
Tunning da jvm  dos comandos às configuraçõesTunning da jvm  dos comandos às configurações
Tunning da jvm dos comandos às configurações
 
Node js
Node jsNode js
Node js
 

Semelhante a Git commits - como, quando e por quê?

git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)Carlos Duarte do Nascimento
 
Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Wellington Moreira
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareAldson Diego
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com GitVagner Santana
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Taller Negócio Digitais
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com GitRaphael Cruzeiro
 
Otimize sua web page e web components
Otimize sua web page e web componentsOtimize sua web page e web components
Otimize sua web page e web componentsAndré Betiolo
 
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Leo Baiano
 
Html - capitulo 06
Html - capitulo 06Html - capitulo 06
Html - capitulo 06Alvaro Gomes
 
Git workshop
Git workshopGit workshop
Git workshopYuri Reis
 

Semelhante a Git commits - como, quando e por quê? (20)

git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)git fail --force (faça as pazes com seus pull requests)
git fail --force (faça as pazes com seus pull requests)
 
Git 101
Git 101Git 101
Git 101
 
GIT: O Commit, o Fluxo e a Tag
GIT: O Commit, o Fluxo e a TagGIT: O Commit, o Fluxo e a Tag
GIT: O Commit, o Fluxo e a Tag
 
Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?Por quê você deve utilizar TDD?
Por quê você deve utilizar TDD?
 
EIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de SoftwareEIIFRO2014 - Desenvolvimento Colaborativo de Software
EIIFRO2014 - Desenvolvimento Colaborativo de Software
 
GIT - Hands-On
GIT - Hands-On GIT - Hands-On
GIT - Hands-On
 
Python3
Python3Python3
Python3
 
Sendo um GIT master
Sendo um GIT masterSendo um GIT master
Sendo um GIT master
 
Ferramenta git
Ferramenta gitFerramenta git
Ferramenta git
 
Controle de Versões com Git
Controle de Versões com GitControle de Versões com Git
Controle de Versões com Git
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
 
Controle de versionamento com Git
Controle de versionamento com GitControle de versionamento com Git
Controle de versionamento com Git
 
Otimize sua web page e web components
Otimize sua web page e web componentsOtimize sua web page e web components
Otimize sua web page e web components
 
Codigo limpo
Codigo limpoCodigo limpo
Codigo limpo
 
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
Coisas que eu gostaria de saber antes de começar a desenvolver temas e plugin...
 
Html - capitulo 06
Html - capitulo 06Html - capitulo 06
Html - capitulo 06
 
Aula 02
Aula 02Aula 02
Aula 02
 
Git workshop
Git workshopGit workshop
Git workshop
 
Aula 06 - TEP - Introdução SQLite
Aula 06 - TEP - Introdução SQLiteAula 06 - TEP - Introdução SQLite
Aula 06 - TEP - Introdução SQLite
 
Django Básico
Django BásicoDjango Básico
Django Básico
 

Mais de viniciusban

Gitlab flow solo
Gitlab flow soloGitlab flow solo
Gitlab flow soloviniciusban
 
Gitlab flow solo (pt-BR)
Gitlab flow solo (pt-BR)Gitlab flow solo (pt-BR)
Gitlab flow solo (pt-BR)viniciusban
 
Gitlab flow solo (minimo)
Gitlab flow solo (minimo)Gitlab flow solo (minimo)
Gitlab flow solo (minimo)viniciusban
 
Testes pythonicos com pytest
Testes pythonicos com pytestTestes pythonicos com pytest
Testes pythonicos com pytestviniciusban
 

Mais de viniciusban (7)

Gitlab flow solo
Gitlab flow soloGitlab flow solo
Gitlab flow solo
 
Gitlab flow solo (pt-BR)
Gitlab flow solo (pt-BR)Gitlab flow solo (pt-BR)
Gitlab flow solo (pt-BR)
 
Gitlab flow solo (minimo)
Gitlab flow solo (minimo)Gitlab flow solo (minimo)
Gitlab flow solo (minimo)
 
Gitlab flow
Gitlab flowGitlab flow
Gitlab flow
 
Git na pratica
Git na praticaGit na pratica
Git na pratica
 
Git conceitos
Git conceitosGit conceitos
Git conceitos
 
Testes pythonicos com pytest
Testes pythonicos com pytestTestes pythonicos com pytest
Testes pythonicos com pytest
 

Git commits - como, quando e por quê?

  • 1. COMMIT COMO, QUANDO E POR QUE? By @viniciusban
  • 2. um commit deve ● Confirmar uma única unidade de trabalho ● Descrever o que foi feito ● Descrever por que foi feito ● Fazer parte de um contexto (histórico)
  • 3.
  • 4. Escreva suas mensagens de commit como se um psicopata que sabe onde você mora fosse lê-las.
  • 5. recomendações ● Commit com frequência ● Descreva apenas uma unidade de trabalho ● Dezenas ao dia ● Conte uma história ● Insira referências (tickets, outros commits e materiais de recomendação)
  • 6. commits bons e ruins (1) Conserta o header (ao ser aceito, esse commit irá) Mudar o ID css do titulo do header que ficava escondido por baixo da imagem
  • 7. commits bons e ruins (2) Conserta o header (2) (ao ser aceito, esse commit irá) Incluir o novo arquivo header.css que eu esqueci no commit anterior Dica: use git commit --amend para essa situação
  • 8. commits bons e ruins (3) Ajusta header com js (ao ser aceito, esse commit irá) Ajustar o header com js ao inves de apenas CSS... - Closes #284
  • 9. commit ótimo (Ao ser aceito, esse commit irá...) Corrigir bug q impede usuario de se inscrever... Os usuarios sao impedidos de se registrar se nao visitaram antes a pagina de planos e precos. Contavamos que a informacao de trilha existiria para os logs que criamos depois que um usuario se registrava. Corrigi, fazendo o logger so gravar se essa informacao estiver disponivel. - Closes #2873942 http://sistema-de-demandas/ticket - O commit d2438a2 tentou corrigir, mas falhou.
  • 10. dicas (parte 1) ● 1ª linha do commit – É o assunto, como num email, com 50 caracteres. – Abrevie com bom senso. – Termine com “...” se houver corpo da mensagem – Deixe uma linha em branco depois dela.
  • 11. dicas (parte 2) ● Adote um padrão para commits padrão – “pep8”, “identar”, “organizar fonte” – “Criar crud clientes” (só se for gerado automaticamente) ● Não ache um padrão aonde não existe: – Refatoração – Renomear variáveis, métodos, funções.
  • 12. problemas ● PROBLEMAS – Não consigo resumir o que eu fiz em apenas 50 caracteres – O resumo do commit tem a conjunção "e" ● SUGESTÃO – Diminua a unidade de trabalho. – git add -p ajuda a identificar as unidades lógicas e a quebrar o commit. – Não misture mexida de identação, por exemplo, com alterações funcionais no mesmo commit.
  • 13. problemas ● PROBLEMAS – Quando lembro de commitar, já mexi em um monte de coisa ● SUGESTÃO – Defina objetivos antes de começar a codificar. – Faça uma lista de TO-DO no próprio programa.
  • 14. problemas ● PROBLEMAS – Commitar toda hora é chato e cansativo ● SUGESTÃO – Pense que cada commit ajuda a contar a história do que você está fazendo no sistema. – Imagine você dando um git log daqui a 6 meses. O histórico que você está criando te ajudará a descobrir um bug ou a entender uma opção de projeto?
  • 15. problemas ● PROBLEMAS – Eu não acho necessário descrever tudo o que fiz ● SUGESTÃO – Imagine que a mensagem de commit é um email que você só vai ler daqui a 6 meses. Você entenderia o que foi feito lendo essa mensagem?
  • 16. referências ● https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_GIT_comm it_message_structure ● http://chris.beams.io/posts/git-commit/ ● http://www.slideshare.net/TarinGamberini/commit-messages-goodpractices ● http://ablogaboutcode.com/2011/03/23/proper-git-commit-messages-and-an- elegant-git-history/ ● https://github.com/blog/926-shiny-new-commit-styles ● http://robots.thoughtbot.com/5-useful-tips-for-a-better-commit-message ● https://gitlab.com/help/markdown/markdown.md#special-gitlab-references (só acessa logado)