Git: Além do git add, git commit e git push
Vamos avançar o conhecimento em git com alguns comandos que podem ser bem úteis no seu dia a dia
De modo geral o Git é um sistema de versionamento, ou seja, com essa ferramenta é possivel criar diferentes versões de código. Isso é possivel pois, o Git cria um histórico de commits. Em um primerio momento pode paracer um pouco complicado mas, essa ferramenta é sem sombra de dúvidas primordial para o dia-a-dia de um(a) desenvolvedor(a).
Ainda vale a pena destacar uma caracteristica que torna o Git muito superior a outras ferramentas de controle de versão, que é o seu sistema distribuido permitindo que várias pessoas em diferentes lugares trabalhe em um mesmo projeto simultaneamente.
Todo iniciante em Git começa aprendendo os comandos basicos, git add, git commit e git push, neste post vamos avançar e ampliar nosso conhecimento em Git adicionando outros comando que são bem úteis.
1. ENTENDENDO O GIT WORKFLOW
Ao adicionar um novo arquivo ao projeto, ex.: readme.md, esse arquivo ainda não possui nenhuma referencia para o Git, portanto, ele está untracked e apenas no nosso working directory como mostra a imagem a seguir:

Porém, quando executamos o comando:
git add readme.md
esse arquivo passa a ter uma referencia para o Git e passa para a staging area.

Quando executamos o comando:
git commit -m 'inicia projeto'
esse arquivo passa para o nosso local repository e o primeiro commit é criado.

2. CORRIGINDO A MENSAGEM DE COMMIT
Para corrigir a mensagem de commit basta executar o seguinte comando:
git commit --amend
Logo em seguida irá abri o editor configurado no Git, no meu caso é o vim, então, basta apertar a tecla "i" para indicar para o editor que será feita uma alteração, corrigir a mensagem de commit e em seguida apertar as teclas ESC + :wq para salvar e sair.

Com o comando git log é possivel visualizar que a mensagem foi alterada com sucesso!

Caso queria trocar o editor configurado no Git basta utilizar o comando a seguir:
git config --global core.editor <editor-de-sua-preferencia>
3. REMOVENDO DA STAGING AREA
Se por acaso adicionamos por engano algum arquivo a staging area para remover basta executar o comando:
git rm --cached <nome-do-arquivo>

A imagem acima mostra, que tinhamos dois arquivos na staging area (readme.md e index.js).
Ao executar os comandos git rm --cached readme.md e git status, respectivamente, podemos ver que o arquivo index.js permaneceu na staging area,
enquanto o arquivo readme.md foi removido passando para untracked, ou seja, para o working directory.
4. REMOVENDO UM COMMIT
Vamos considerar o seguinte histórico de commits como mostra a imagem a seguir:

Se quisermos remover um commit existem 3 formas. A primeira forma é através do comando a seguir:
git reset --soft <hash-do-commit>

Note que a hash do comando corresponde ao do commit para onde queremos retornar.
Neste caso as alterações que estavam salvas no local repository são apagada mas, permanecem salvas na staging area e no working directory conforme mostra a imagem a seguir:

Outra forma de apagar um commit é através do commando:
git reset --mixed <hash-do-commit>
Nesse caso, as alterações são apagadas tando do local repository quanto da staging area permanecendo salvas apenas no working directory.
E por último o commando:
git reset --hard <hash-do-commit>
Apaga por completo as alterações.
5. MUDAR DE BRANCH SEM PRECISAR COMMITAR AS ALTERAÇÕES
Imagine o cenário em que está trabalhando em uma branch implementando uma nova funcionalidade, mas, surge uma nova tarefa importante e é preciso trocar a branch. Para não comprometer as mudanças feitas podemos armazená-las temporariamente com o comando:
git stash
Agora, podemos alterar de branch com segurança. E para reaplicar as mudanças que ficaram temporariamente armazenadas podemos usar o comando:
git stash apply
6. MERGE DE BRANCHS COM REBASE
O git rebase é um comando utilizado para criar um histórico de commits linear e sem bifurcações. Isso torna mais fácil de entender o histórico de commits de um projeto.
git rebase <branch>
O comando acima faz com que o Git transfira na mesma ordem os commits da branch de trabalho para a ponta da branch de destino.
⚠️ Atenção: Aqui é importante ressaltar que esse comando reescreve o histórico de commits da branch de destino, portanto, não é recomendando utilizar em branchs que são compartilhadas entre o time de desenvolvedores.
7. VIZUALIZAR ÁRVORE DE COMMITS
Conforme mencionei no inicio desse post o Git cria um histórico de commits e a medida que criamos branchs diferentes uma árvore de commits é formada. Para visualizar a árvore de commits podemos utilizar o comando a seguir:
git log --decorate --oneline --graph --all
A imagem a seguir ilustra um exemplo:

8. CRIAR ALIAS
O Git permite criar atalhos e personalizar os comandos, isso é interessante para ganhar produtividade e evitar erros de digitação. Podemos criar um alias para o comando git status conforme mostra o comando a seguir:
git config --global alias.st status
No comando acima definimos o alias "st", isso significa que ao digitar o comando git st implicitamente o comando git status irá ser executado.
9. DICAS FINAIS
O site git-school é uma ferramenta que permite explorar o Git, atraves dela é possivel testar os comando e visualizar a árvore de commits a medida que os comandos vão sendo executados. E o cheatsheet mostra uma série de comandos bem completa vale a pena dá uma conferida.
Se gostou do post deixa seu comentário aqui embaixo e compartilha!
