Git e Github
Tutoriais básicos de Git e Github:
Git flow e convenções
Através do git flow, podemos coordenar múltiplos esforços paralelamente através do recurso de commits e ramificações (branches) do git.
Commits
Cada commit é como se fosse um snapshot do código, ele é utilizado para trackear mudanças significativas feitas no código.
Por exemplo, suponhamos que um desenvolvedor chamado Lucas esteja trabalhando em uma nova feature, a estilização e funcionalidade da página de Login.
Conforme o Lucas esteja trabalhando nessa feature, é interessante que ele salve as alterações que funcionem em seu código.
Exemplo: Lucas começa a adicionar os elementos HTML como o <input />
e o <form></form>
. Quando ele visualizar que os elementos HTML estão funcionando bem, ele deve fazer um commit da seguinte forma:
$ git commit -m "add: html form for login page"
Logo em seguida, Lucas começa a trabalhar na estilização, após finalizar o seu css, ele deve commitar novamente:
$ git commit -m "add: styling for html form in login page"
No final do dia, Lucas terminou seu trabalho, que era finalizar a página de Login. Desta forma ele pode criar uma nova Pull Request para ter seu trabalho fundido (merged) na ramificação (branch) de desenvolvimento principal da empresa.
OBS: Emojis não são necessários para os as mensagens do commit.
Semânticas da mensagem de um commit
Para manter a organização e facilitar o versionamento do código uma padronização para as mensagens de commit se torna necessária, com isso uma semântica para as mensagens de commit se torna crucial.
A mensagem de um commit deve ser estruturada da seguinte forma:
feat: add button component
^--^ ^------------^
| |
| +-> Resumo no tempo presente.
|
+-------> Tipo: chore, docs, feat, fix, refactor, style, or test.
Tipos:
feat
: Novo recurso para o usuáriofix
: Correção de bug para o usuáriodocs
: Mudanças na documentaçãostyle
: Formatação, falta de ponto e vírgula, etc; nenhuma alteração no código de produçãorefactor
: Refatoração de código de produção, por exemplo. renomear uma variáveltest
: Adição de testes ausentes, testes de refatoração; nenhuma mudança de código de produçãochore
: Modificação que o usuário não irá ver, por exemplo ci/cd, config files, etc; nenhuma mudança de código de produção
Ramificações (Branches)
No git flow, temos as principais branchs que são:
- Main: branch de produção, contém código que está sendo executado em produção.
- Hotfix: branch para consertos rápidos dos erros presentes na Main
- Release: branch para versionamento do produto/serviço que está sendo desenvolvido, e que segue o padrão semver.
- Develop: branch principal para incrementar features ao produto/serviço, que após ser estabilizado, é fundida com a branch Release.
- Features: branch de desenvolvimento de novas features, para cada nova feature, uma nova branch desse tipo é criada.
Para nomear cada branch do tipo Feature, seguimos a convenção:
<tipo-da-branch>-<autor>-<feature_a_ser_desenvolvida>
# Exemplo
- dev-abehidek-mudar_cor_do_botão
- dev-vitormiura-criar_home_page
Vários autores em um commit
Para commitar com vários autores, basta colocar o seguinte texto logo abaixo da mensagem de commit
Fix: typo
In this commit I fixed a typo in the documentation.
Co-authored-by: AUTHOR-NAME <ANOTHER-NAME@EXAMPLE.COM>