Introdução
Git é o sistema de controle de código-fonte mais popular, com incríveis 93,87% de adoção pelos desenvolvedores (de acordo com a Pesquisa de 2022 do StackOverflow). É um sistema realmente poderoso, com muitos recursos ocultos não conhecidos pela maioria de nós, desenvolvedores.
Neste post, mostrarei alguns desses recursos que facilitarão seu trabalho ao usar o Git.
1 - Remover branches excluídas remotamente no fetch
Trecho da documentação do Git:
O Git tem uma disposição padrão de manter os dados, a menos que sejam explicitamente descartados; isso se estende a manter referências locais a branches em remotos que eles próprios excluíram esses branches.
Se deixadas acumular, essas referências obsoletas podem piorar o desempenho em repositórios grandes e ocupados que têm muita rotatividade de branches e, por exemplo, tornar a saída de comandos como git branch -a –contains
desnecessariamente verbosa, bem como impactar qualquer outra coisa que funcione com o conjunto completo de referências conhecidas.
Para remover branches locais que não têm referências de rastreamento remoto ao buscar todas as branches, em vez de usar o parâmetro --all
, use o parâmetro --prune
:
git fetch --prune
Documentação do git fetch –prune
2 - Fazer merge/rebase sem fazer checkout da branch de destino
Ao fazer um merge ou um rebase, é comum ver as pessoas fazerem o seguinte:
|
|
As branches do Git são apenas referências a um commit. Quando fazemos um fetch, as branches remotas são criadas localmente com um prefixo origin/
, então não há necessidade de fazer checkout da branch-to-merge-from
antes de fazer merge.
ℹ️ O prefixo da branch remota depende do nome remoto, mas o padrão é
origin
.
O seguinte funciona sem ter que fazer checkout e pull na branch local branch-to-merge-from
:
|
|
Documentação do git Remote Branch
3 - Acionar o pipeline CI/CD com um commit em branco
Se você estiver trabalhando com um pipeline CI/CD (e você deveria), às vezes você precisa acionar o pipeline sem fazer alterações no código. Em vez de alterar arquivos adicionando linhas vazias no final, criando logs desnecessários, podemos criar um commit vazio:
|
|
Documentação do git commit –allow-empty
4 - Visualizar um arquivo em outra branch
Ao trabalhar em um recurso, muitas vezes precisamos verificar um arquivo em outra branch, por exemplo, na branch de produção (main). Alguns serviços Git oferecem uma interface web que facilita a procura de arquivos em branches específicas, mas se você não tiver esta opção, o Git pode mostrar o arquivo na linha de comando sem ter que mudar de branch, usando o comando show
seguido pelo nome da branch e o caminho para o arquivo.
git show main:src/Program.cs
Como com outros comandos Git, podemos passar qualquer commit ou referência, em vez do nome da branch:
# Mostra o arquivo program.cs no commit anterior
git show HEAD~1:src/Program.cs
5 - Fazer checkout da branch usada anteriormente
Para voltar para a branch usada anteriormente, basta passar -
como o parâmetro da branch:
|
|
6 - Pesquisando no Git
Se você quiser pesquisar por uma string em seu repositório, use o comando git grep
.
Para procurar a string em todos os commits, forneça a lista de commits para git grep
usando o comando git rev-list --all
como mostrado abaixo:
|
|
7 - Mostrando o log de commits como um gráfico
O Git pode mostrar os logs de commit na forma de um gráfico na linha de comando. Para isso, use o parâmetro --graph
do comando git log
.
ℹ️ Passe o parâmetro
--oneline
para mostrar o hash do commit e a mensagem do commit em uma linha e facilitar a leitura do gráfico.
git log --graph --oneline
O Git também pode mostrar o histórico de commits de um arquivo específico:
git log --graph --oneline systemcontext.md
Documentação do git log –graph
Extra - Git Aliases
Para facilitar o uso desses comandos, podemos criar aliases Git. Neste post explico os aliases Git e mostro alguns que uso diariamente.