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
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
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.
Vamos melhorar nossa histórico removendo os commits indesejados.
git rebase -i master
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'.
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.
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.
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
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
Para ver o que tem acontecido
git reset HEAD@[{1}
git restore .
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
Para salva o WIP (Work in progress). Depois dar um
git stash list
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"
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
O menos -p é pra uma visualização completa. Para aplicar um stach
$ git stash pop stash@{2}
Esse 2 ai é o indice do stash. Para passar um stach para um novo branch
$ git stash branch add-stylesheet stash@{1}
Para limpar um stach específico
git stash drop stash@{1}
Ou para limpar todos os stachs
git stash clear
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 diff
- https://www.atlassian.com/br/git/tutorials/saving-changes/git-diffgit config
$ git config --global user.name "Fulano de Tal"
$ git config --global user.email fulanodetal@exemplo.br
- Criando tags:
git tag -a v1.1.0
git push origin v1.1.0
- Um brinde para você treinar o seu git e visualizar a forma como ele trabalha sem precisar criar um repositório: https://git-school.github.io/visualizing-git/#free
Aproveitei para testar a ferramenta, um print com os comandos que usei, preferi iniciar pela opção Chery Pick.
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
Top comments (0)