DEV Community

Cover image for Atomic commits
Rafael Nunes
Rafael Nunes

Posted on

Atomic commits

Sabe quando você vê uma pessoa que está pesada e sobrecarregada ?
Provavelmente você já presenciou algum amigo que acumulou problemas até o ponto que não aguentava mais e colocou tudo pra fora de uma vez.
Veio tudo com uma avalanche , e provavelmente isso causou mais problemas .
E depois desse ponto alguns chegam a se apegar ao problema que essa avalanche criou , ao ponto que o problema se tornou maior do que a situação , até que ! As pessoas desistem. Tentam começar de novo , algumas até seguem os mesmos passos e se enrroscam no mesmo raciocínio como um círculo sem começo nem fim.

Eu já tive esse carma, e hoje felizmente já consigo me ver livre dele.
Eu estou aqui pra falar de código , e como atomic commits mudou a minha forma de pensar, e ao poucos fui tirando esse peso.

Projetos

Meu GitHub era definitivamente uma enorme montanha de código sem vida , algo com início , meio e sem fim.
De um commit pro outro não era um tijolo , era a casa inteira. Ainda tenho muito disso nele e parte da soluçao foi dar foco ao que eu estava fazendo, e com dar foco eu comecei a olhar mais de perto.
Com isso fui fazendo commits menores , de forma que eu pudesse olhar pra traz e pensar , será que essa soluçao aqui foi a melhor ? E ao invez olhar um problema grande , eu comecei a enchergar pequenos problemas e com isso as coisas começaram a andar, a sensaçao de "isso é muito difícil " começou a diminuir.

Boas práticas

Atomic commits é uma boa prática do git pra marcar no seu código alguns "snapshots " , ou versões dele a medida que a linha do tempo aumenta.
Imagine você , desenvolvendo uma soluçao até que em alguma parte um bug começa a imendar no outro, e você já não sabe mais o que fazer . Quando você olha pro seu codigo, nem consegue enchergar direito os tijolos mais, alguém já pode até ter mechido e as coisas ficam acumuladas , problemas acumulados vindos todos de uma vez. O contl-z você já apertou inúmeras vezes e ao invez de melhorar parece que piora.

Com atomic commits é só você voltar pra última versão em que tudo funcionava . BOMM , o planeta explodiu e você vai lá ver o que aconteceu antes dele explodir.

git

git add .
git commit -m "Aqui meu código funciona"
Enter fullscreen mode Exit fullscreen mode

Pronto , pra voltar pro último commit:

git reset --hard 
Enter fullscreen mode Exit fullscreen mode

E inspecione por que o planeta explodiu .
E caso a última versão tenha passado algo que você não viu e que ir mais a fundo :

git log --oneline 
Enter fullscreen mode Exit fullscreen mode

Pegue os caracteres iniciais desse commit e coloque :

git checkout 90ajf784

//Caracteres do commit
Enter fullscreen mode Exit fullscreen mode

E aqui está uma outra versão mais antiga a sua escolha. Caso você queira partir desse ponto você vai precisar criar uma nova branch pois uma versão mais antiga que o último commit modificada daria conflito com o próximo commit a frente .
Seria possível fazer algo como ;

git branch hot-fix
do ponto que você voltou, e fazer um checkout na branch que você acabou de criar .

git checkout hot-fix

O mais importante desse processo é que ele te permite ver onde você errou e criar uma nova estratégia .

Eu gostei tanto disso que trouxe pra minha vida . Um processo passo a passo "baby steps " , sequências de pequenas conquistas merecem comemoraçoes.
Talvez você não tenha grandes soluçoes pra grandes problemas , mas tenha soluçoes pra problemas pequenos .
E se ser programador é ser um solucionador de problemas :

git add .
git commit -m 'passo 1 ' 

git add . 
git commit -m 'passo 2' 

git add . 
git commit -m 'passo 3'

git checkout master

git merge hot-fix 
Enter fullscreen mode Exit fullscreen mode

Agora você tem um conflito de merge , mas se você está interessado em git vou deixar pra você a soluçao .

Solucionar problemas

Definitivamente atomic commits trás uma nova versão de modo de pensar , eu me deparei com esse pensamento quando vi pessoas que tinham menos conhecimentos que os meus solucionando problemas maiores que eu conseguia. Até que percebi que eu estava apegado às problemas que eu criei, revirando soluçoes de programadores que fizeram coisas simples mas resolveram problemas, só tenho a agradecer a comunidade por deixar o código aberto. As vezes vejo os códigos como criaturinhas que alguém criou, pronta pra fazer alguma coisa .

O que acha implementar atômic commits no código ?
E quem sabe criar hábitos atômicos na sua vida ?

Top comments (0)