DEV Community

Cover image for Fluxo GIT descomplicado: Parte 2
Philipe Cairon
Philipe Cairon

Posted on

Fluxo GIT descomplicado: Parte 2

E se você caiu aqui de paraquedas pode conferir a parte 1 deste artigo aqui: https://dev.to/magominimalista/fluxo-git-descomplicado-parte-1-pn8


Dando continuidade a nossos estudos vou falar um pouco mais sobre git para cobrir algumas partes que ficaram a desejar no post anterior. Vamos conversar um pouco mais sobre o assunto e no final eu lanço uma sessão de extras com alguns comandos não abordados.


Histórico da master

O histórico da master é muito importante, para mostrar o passo a passo dos eventos. Se tem outras pessoas trabalhando conosco no projeto temos que ter alguns cuidados quando mudamos o histórico de eventos do nosso git pela master. Eu poderia lançar um:

git push --force
Enter fullscreen mode Exit fullscreen mode

Esse comando seria suficiente para ressincronizar os históricos no nosso servidor. Mas se alguém além de você estiver trabalhando na master a atualização feita por essa pessoa vai se perder. O ideal seria fazer um:

git push --force-with-lease
Enter fullscreen mode Exit fullscreen mode

O próprio git vai avisar a você se tiver um novo commit para que você baixe a nova atualização antes de rodar novamente o comando.


Deixando os commits úteis no seu histórico

Lembrando que tem commits como WIP alguma coisas que não são relevantes para o histórico, apenas apontam um status da aplicação que você estava salvando pra continuar depois etc.

'Exibindo como está o histórico git'

Vamos melhorar nossa histórico removendo os commits indesejados.

git rebase -i master
Enter fullscreen mode Exit fullscreen mode

'Exibindo como fica depois do comando'

Irá aparecer esse documento você digita a para editar e esq + :wq para salvar e sair. Para alterar e deixar uma mensagem diferente você pode trocar onde tem 'pick' por 'squash' ou se preferir não digitar mensagem alguma troque apenas por 'fixup'.

'Como teria sido o squash'

'Como teria sido o fixup'

'Após as alterações digita a mensgem'

'Finaliza'

No github também tem essa opção quando as alterações realizada não possuem um impacto no histórico é possível incluir no fazer um merge no último commit sem precisar declarar na master caso não seja relevante.
'Mostra como está ficando'


Fluxo de trabalho

Criar branches com significados para trabalhar em uma parte separada do código e depois fazer o merge com rebase é muito melhor pois evita conflito no código quando se trabalha com outros.

'Fluxo de trabalho'

E para nos ajudar com essa tarefas sem precisar ter que ficar decorando os comandos temos uma ferramenta que roda em todos os sistemas operacionais que é o cheatshit do git flow. Você pode conferir a verão em português em: https://danielkummer.github.io/git-flow-cheatsheet/index.pt_BR.html

Separei algumas imagens, tamanho é a utilidade e facilidade desta ferramenta

'Exemplo 1'
'Exemplo 2'


Refazer o código

Usar o git rebase (rebobina seus commits e coloca no topo da sua árvore de commits) e git reset --hard (literalmente apaga seu último commit) e pode acontecer de você se perder um pouco, então o ideal mesmo é fazer assim:

git reflog
Enter fullscreen mode Exit fullscreen mode

Para ver o que tem acontecido

git reset HEAD@[{1}
git restore .
Enter fullscreen mode Exit fullscreen mode

Reseta para um estado anterior e depois restaura o código. Para ver as alterações novamente dá um git reflog.


Evitando os WIP(s) aqueles passos que não é preciso entrar no nosso histórico de gitlog

Podemos usar o

git stash
Enter fullscreen mode Exit fullscreen mode

Para salva o WIP (Work in progress). Depois dar um

git stash list
Enter fullscreen mode Exit fullscreen mode

Para visualizar a lista de stashs criada. Para contextualizar melhor, é uma boa prática anotar uma descrição para seus stashes, usando o

git stash save "mensagem"
Enter fullscreen mode Exit fullscreen mode

Por padrão, git stash pop vai reaplicar o stash criado mais há pouco tempo: stash@{0}. Para visualizar as diferenças entre os stashs vamos usar:

git stash show -p
Enter fullscreen mode Exit fullscreen mode

O menos -p é pra uma visualização completa. Para aplicar um stach

$ git stash pop stash@{2}
Enter fullscreen mode Exit fullscreen mode

Esse 2 ai é o indice do stash. Para passar um stach para um novo branch

$ git stash branch add-stylesheet stash@{1} 
Enter fullscreen mode Exit fullscreen mode

Para limpar um stach específico

git stash drop stash@{1} 
Enter fullscreen mode Exit fullscreen mode

Ou para limpar todos os stachs

git stash clear
Enter fullscreen mode Exit fullscreen mode

Nota: Vou deixar um link para ter uma visão melhor do git stash: https://www.atlassian.com/br/git/tutorials/saving-changes/git-stash


Extra

Estamos chegando ao final desse tutorial mas temos muita coisa ainda que deixamos passar. São elas:

$ git config --global user.name "Fulano de Tal"
$ git config --global user.email fulanodetal@exemplo.br
Enter fullscreen mode Exit fullscreen mode
  • Criando tags:
git tag -a v1.1.0
git push origin v1.1.0
Enter fullscreen mode Exit fullscreen mode

Aproveitei para testar a ferramenta, um print com os comandos que usei, preferi iniciar pela opção Chery Pick.

'Exemplo'

Gente eu só tenho a agradecer por ter terminado esse estudo, acho que o git é muito mais que isso, tem coisas aqui que não foram abordados ainda, mas esse conteúdo já te permite trabalhar de forma profissional com ele.

Espero que tenham gostado.

Att,

Sobre o autor:

  • Philipe Cairon (Mago Minimalista)
  • Full Stack Web developer

Me encontre no Linktree: 'Linktree'

Top comments (0)