git é usado para controle de versão para todos os projetos do GNOME. Essa página presume que tenha um bom conhecimento em trabalhar com git; algum material introdutório está disponível aqui e um folha de dica está aqui.
Faça commits atômicos e reversíveis. ()
Inclua toda a fundamentação nas mensagens de commit, junto com links para especificações e relatórios de erros relevantes. ()
Mantenha alterações grandes, como renomeações, em commits separados. ()
Mescle alterações de ramos de recursos por meio de rebase. ()
A maioria dos repositórios do GNOME seguem essas regras:
Nenhum push forçado. Exceto para ramos com o prefixo wip/
(trabalho em progress), o histórico de commits não deve ser modificado, pois contribuidores dependem dele.
Faça rebase nos commits em vez de merge, para ter um histórico linear (que é mais fácil de seguir).
Trabalhe em ramos de recursos no git do GNOME em ramos wip/
e então aplique rebase no master e merge em fast-foward nas alterações. Também é uma boa prática adicionar seu apelido ao nome do ramo, como wip/apelido/recurso
.
Oculte “fazimento de salsicha” (do inglês, “sausage making”) compactando commits antes de mesclá-los.
Commits devem ser tão pequenos quanto possível, mas não menores. Cada commit deve resolver um único problema, contendo apenas alterações relacionadas àquele problema. A mensagem para cada commit deve descrever o problema, explicar o que o causa e explicar como ele foi corrigido, se isso não foi óbvio. Se o commit está associado com um relatório de erro, a URI completa para o relatório de erro deve ser colocado em uma linha dedicada na parte inferior da mensagem de commit. Similarmente, o ID para o commit do git (do
As alterações em cada commit devem ser fáceis de ler. Por exemplo, eles não devem desnecessariamente alterar espaços em branco e recuo. Alterações grandes e mecânicas, tal como renomear um arquivo ou função, devem ser colocadas em commits separados das modificações do código dentro daquele arquivo ou função, de forma que as alterações posteriores não sejam enterradas ou perdidas na anterior.
Os princípios a seguir fundamentam todos os conselhos acima:
Cada commit deve levar o repositório a partir de um estado de trabalho para outro, do contrário bissecção é impossível.
Cada commit deve ser individualmente reversível. Se posteriormente o commit acabar sendo uma ideia ruim,
A fundamentação de cada commit, e sua relação com recursos externos como especificações e relatórios de erro, deve estar clara de forma que aqueles commits escritos por um desenvolvedor no passado devem ainda ser entendíveis por um segundo desenvolvedor sem ter que seguir todo rastro de alterações e descobrir o que eles fazem.
Cada commit deve ser escrito uma vez e projetado para ser lido muitas vezes, por muitos revisores e futuros programadores.
Para mesclar um ramo de recursos chamado meu-ramo
no master, use os seguintes comandos:
git checkout master
git pull
git checkout wip/meu-ramo
git rebase --interactive master
# Certifique-se que o rebase funcione com sucesso; teste as alterações
git checkout master
git merge wip/meu-ramo
git push
# wip/meu-ramo agora pode ser excluído
git push origin :wip/meu-ramo
git branch -D wip/meu-ramo
Melhores práticas com git
Perguntas frequentes do git
Tutorial de git do Atlassian
Tutorial oficial do git
Tutorial interativo de git
Tutorial git-tower