git blame
git blame: mostrar o histórico de commits de um arquivo, linha por linha.
O comando git blame mostra qual commit modificou cada linha de um arquivo pela última vez, junto com o autor, o timestamp e o número da linha. É um jeito rápido de entender por que uma linha está do jeito que está, quem mexeu nela por último ou quando uma regressão pode ter sido introduzida. Em vez de vasculhar cada commit manualmente, você pode ir direto à alteração responsável.
A saída é lida de cima para baixo, como o próprio arquivo. Cada linha começa com um hash do commit abreviado, seguido das informações do autor, da data, do número original da linha e, por fim, do conteúdo da linha no arquivo. Você pode apontar o git blame para um arquivo no seu diretório de trabalho ou para um commit específico (por exemplo, HEAD~3) para inspecionar uma versão mais antiga.
1b2c3d4 (Jane Doe 2024-02-19 12) import React from "react";
5e6f7a8 (Jane Doe 2024-02-20 13) import {Button} from "./Button";
5e6f7a8 (Jane Doe 2024-02-20 14)
9a0b1c2 (Alex Roe 2024-03-01 15) export function Header() \{
9a0b1c2 (Alex Roe 2024-03-01 16) return <Button>Buy tickets</Button>;
9a0b1c2 (Alex Roe 2024-03-01 17) }Casos de uso
- Identificar quem é responsável por uma linha, para abrir o commit exato, ler a mensagem dele e entender a intenção antes de alterar ou reverter o código.
- Reunir contexto rápido sobre arquivos desconhecidos, incluindo o autor, o timestamp e o número original da linha, o que facilita fazer perguntas mais direcionadas ou dividir o trabalho com colegas.
- Rastrear regressões ou identificar a autoria do trabalho, combinando o commit apontado pelo blame com o
git showpara ver quando um bug entrou — ou para copiar os detalhes de autoria em revisões, changelogs ou documentação.
Exemplos
Mostre quem modificou por último cada linha de um arquivo no diretório de trabalho atual:
git blame src/components/Header.tsxLimite a saída a um intervalo específico de linhas usando a opção -L (o início e o fim são inclusivos):
git blame -L 25,40 src/components/Header.tsxDê um blame na versão do arquivo que existia dois commits atrás:
git blame HEAD~2 -- src/components/Header.tsxO separador -- é opcional, mas evita que o Git confunda o caminho do arquivo com um nome de revisão.
Inclua o e-mail do autor na saída para facilitar o contato:
git blame --show-email src/components/Header.tsx.gitignoregit checkoutgit configgit taggit worktree