Conteúdo
O comando git log exibe o log de confirmação em um repositório Git. Por padrão, o comando git log exibe hashes de confirmação, mensagens de confirmação e outros metadados de confirmação. Você pode filtrar a saída do git log com várias opções.
Os sistemas de controle de versão têm um objetivo principal: registrar como sua base de código evolui ao longo do tempo. Isso permite que você veja como o projeto está progredindo. Você pode descobrir quem contribuiu para seu projeto e determinar quais alterações foram feitas em seu código e quando.
Mas como você realmente vê o histórico da criação do seu repositório Git? É aqui que o comando git log pode ser útil.
Este artigo discutirá os conceitos básicos do comando git log e como usá-lo para verificar os repositórios Git com exemplos.
Comando git log
O comando git log exibe uma lista de todos os commits feitos em um repositório. Você pode visualizar o hash de cada confirmação do Git, a mensagem associada a cada confirmação e mais metadados. Este comando é útil para exibir o histórico do repositório.
Enquanto o comando git status se concentra no diretório de trabalho atual, o git log permite visualizar o histórico de um repositório.
Exemplo de comando git log
Vejamos um exemplo para ilustrar como o comando git log funciona. Estamos desenvolvendo um repositório chamado “demo-repository”. Agora queremos ver uma lista de todos os commits que enviamos para o repositório. Para isso podemos usar o seguinte comando:
git log
O comando git log retorna uma lista de todos os commits feitos em um repositório. Aqui está um exemplo de um único commit retornado por este comando:
commit 8ce5e12f6c475cc0d5768584041420f6220d992c (HEAD -> main, origin/main, origin/HEAD) Author: Brayan Monteiro <61334148+brayanmonteiroo@users.noreply.github.com> Date: Thu Jul 21 14:55:06 2022 -0300 Update index.html
Vamos discutir esta saída passo a passo. Cada entrada retornada pelo comando git log contém:
- O hash Secure Hash Algorithm (SHA) do commit que identifica exclusivamente cada commit no repositório. Em nosso exemplo acima, isso é “8ce5e12f6c475cc0d5768584041420f6220d992c”.
- Autor enviado. Em nosso exemplo acima, este é Brayan Monteiro. O e-mail do autor também é especificado.
- Envie a data em que o envio foi feito. No exemplo acima, esta é quinta-feira, 21 de Julho.
- A mensagem associada ao commit. A mensagem de confirmação retornada acima é “Update index.html”.
- Todos esses dados nos fornecem informações úteis sobre commits em nosso repositório.
Filtrar a saída do log do git
Por padrão, o git log retorna uma lista de todos os commits feitos no repositório usando essa estrutura. Como você pode imaginar, ler as instruções do git log pode se tornar rapidamente difícil se houver muitos commits para ler.
git log vem com alguns sinalizadores que podem ser usados para filtrar logs. estes são:
Filtrar por mais recente
Se você deseja retornar um número específico de commits, você pode usar o sinalizador -n. Aqui está um exemplo:
git log -n 3
Este comando retorna uma lista dos três commits mais recentes feitos no repositório.
Filtrar por autor ou commiter
Você também pode filtrar os commits retornados pelo git log por quem escreveu ou submeteu as alterações. Suponha que queremos ver uma lista de commits feitos por “Brayan Monteiro”. Podemos fazer isso com estes comandos:
git log --author="Brayan Monteiro"
git log --committer="Brayan Monteiro"
O sinalizador de autor restringe os resultados a confirmações com alterações feitas por Brayan Monteiro. O sinalizador de committer restringe os resultados aos commits que foram realmente feitos por aquele indivíduo.
Você descobrirá que na maioria dos casos o autor e o committer são a mesma pessoa. Em projetos maiores, o autor do commit não é necessariamente aquele que fez o commit no repositório. É por isso que essas duas bandeiras existem.
Filtrar por data
Além disso, você pode filtrar os resultados do git log por data. Para isso, você pode usar os sinalizadores -before e -after. Esses sinalizadores aceitam vários formatos de data, mas os dois mais usados são referências relativas e datas completas.
Suponha que queremos recuperar uma lista de commits após 2019-3-2. Podemos fazer isso com este comando:
git log --after="2019-3-2"
Especificamos uma data para filtrar nossos commits. Da mesma forma, se quiséssemos recuperar uma lista de commits antes de ontem, poderíamos usar o seguinte comando:
git log --before="yesterday"
Especificamos um valor relativo (“yesterday”).
Agora suponha que queremos recuperar uma lista de commits publicados após 2019-3-2 e antes de 2019-3-19. Podemos fazer isso com este comando:
git log --after="2019-3-2" --before="2019-3-19"
Filtrar por arquivo
Ao usar o comando git log, você pode querer ver apenas uma lista de commits que afetam um arquivo específico. Para fazer isso, você pode especificar o arquivo cujas alterações deseja ver.
Suponha que queremos ver as alterações feitas no arquivo “main.py” em nosso código. Podemos fazer isso com o seguinte comando:
git log -- main.py
instrução — informa ao comando git log que o argumento que especificamos é um caminho de arquivo e não um nome de ramificação.
Em nosso comando, especificamos apenas um arquivo para filtrar a resposta do comando git log. Mas você pode especificar vários arquivos, se quiser.
Filtrar por conteúdo
Você também pode encontrar commits que removem ou adicionam linhas de código específicas.
Suponha que queremos pesquisar todos os commits que tenham o termo “# Introduction” adicionado ao nosso código. Podemos fazer isso com este comando:
git log -S "# Introdução"
O sinalizador -S é usado para especificar quais alterações de commit queremos procurar na lista de commits. Observe que não há espaços ou sinais de igual entre os sinalizadores -S. Além disso, as aspas que usamos para especificar os commits que estamos procurando.
Filtrar por intervalo
Você pode passar uma sequência de commits para o git log usando os parâmetros since e until. A sintaxe para esses parâmetros é a seguinte:
git log <since>..<until>
Suponha que queremos recuperar uma lista de commits feitos do commit b72beb5 antes de ser enviado para o commit b53b22d . Podemos fazer isso com este comando:
git log b72beb5..b53b22d
Este comando retorna uma lista de todos os commits entre os commits b72beb5 e b53b22d.
Filtrar por mensagem
O sinalizador --grep
permite filtrar os commits retornados pelo git log pela mensagem de commit associada a um commit específico.
Por exemplo, digamos que queremos retornar uma lista de todos os commits cujos nomes começam com “upload:”. Podemos fazer isso com o seguinte código:
git <strong>log</strong> --<strong>grep</strong>="upload:"
Este comando retorna uma lista de todos os commits cujas mensagens começam com “upload:”.
Formatar a saída do log do git
Na seção anterior, concluímos a saída completa do comando git log. Essa saída contém o SHA do nosso commit, o autor do commit, a data em que o commit foi enviado e a mensagem do commit.
Nota: O “commit hash” às vezes é chamado de Git commit “reference” ou “SHA”.
Embora todas essas informações sejam úteis, às vezes você só precisa recuperar dados específicos sobre um commit. Felizmente, o comando git log vem com alguns sinalizadores que você pode usar para formatar a saída do comando.
Retornar registro curto
Por padrão, a instrução git log retorna uma entrada de log completa para cada confirmação feita no repositório. Você pode usar o sinalizador --oneline
para recuperar uma lista de IDs de confirmação e suas mensagens de confirmação associadas.
Esta é a sintaxe para o sinalizador --oneline
:
git log --oneline
Quando executado em nosso repositório anterior, este comando retornou:
8ce5e12 (HEAD -> main, origin/main, origin/HEAD) Update index.html 948fdf7 Update index.html decf25e Update styles.css 53df9bd Update index.html 9d83d6c commit adição de legendas nas img do portfólio 2f22e4b commit novo projeto prático 913b57c exclusão de imagens não usadas f9491b5 alteração link do rolar para baixo 070e1cf alteração link logo home a7735a8 portfolio implementação 999fad3 mudando e inserindo dados no index c039b49 template html e css inseridos 54b9152 setup head e66db9c Update index.html af57a57 Update README.md 9223fac Create index.html ef13a4f Update README.md 3f140ae Initial commit
Podemos ver o ID do commit e a primeira linha da mensagem associada ao commit. Isso é mais fácil de ler do que todos os metadados sobre os commits retornados pelo comando git log.
Cada entrada aparece em uma linha. Essa técnica de git log de uma linha é útil porque mostra commits sem mostrar muitas informações.
Decorando saída
O sinalizador --decorate
permite que você veja todas as referências (ou seja, ramificações e tags) apontando para um determinado commit. Aqui está a sintaxe para este sinalizador:
<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">git log --decorar</font></font>
Este comando retorna:
43433 c6 (HEAD - > master, origin / master, origin / HEAD) Atualizar index.html a7d8dc2 docs: Atualizar README.md b53b22d feat: Atualizar site 3 b16026 (tag: v1) feat: Lançar nova homepage b72beb5 first commit
O quarto commit em nossa lista agora tem seu nome de tag especificado. Isso ocorre porque o sinalizador –decorate mostra as referências associadas a cada commit em nosso histórico de commits.
Comando git shortlog
O comando git shortlog fornece um resumo do git log. A saída do comando git shortlog é agrupada por autor, o que significa que você pode ver facilmente quem fez quais alterações no repositório.
Vamos executar o comando git shortlog no repositório anterior:
git shortlog
Nosso comando retorna:
Brayan Monteiro (18): Initial commit Update README.md Create index.html Update README.md Update index.html setup head template html e css inseridos mudando e inserindo dados no index portfolio implementação alteração link logo home alteração link do rolar para baixo exclusão de imagens não usadas commit novo projeto prático commit adição de legendas nas img do portfólio Update index.html Update styles.css Update index.html Update index.html
Brayan é o único que contribui para este repositório, fazendo cinco commits. No entanto, se houver outros contribuidores, suas contribuições serão listadas aqui, juntamente com o número total de commits que eles enviaram para o repositório.
Conclusão
O comando git log
mostra quais alterações foram feitas no repositório, por quem e quando. Você pode filtrar a saída do git log
para mostrar apenas as informações que você precisa saber.
O comando git log
vem com dois tipos de sinalizadores. Alguns sinalizadores ajudam você a formatar a saída do log. Outros sinalizadores que podem ajudá-lo a filtrar os commits retornados pelo comando.
Este exemplo de referência de tutorial discute como usar o git log
e os sinalizadores mais comuns usados com o comando. Ao usar o Git, o comando git log
é uma ferramenta importante em seu arsenal. Depois de saber como usar esse comando de forma eficaz, você será um mestre em verificar os repositórios Git!
Leia também: Font Awesome: guia completo da biblioteca