git blame
git blame (англ. blame означає звинувачувати): показати построкову історію комітів для файлу.
Команда git blame показує, який коміт останнім змінив кожен рядок файлу, а разом із цим — автора, час і номер рядка. Це швидкий спосіб зрозуміти, чому рядок виглядає саме так, хто торкався його останнім і коли могла з'явитися регресія. Замість того щоб вручну перебирати всі коміти, можна одразу перейти до зміни, яка за це відповідає.
Вивід читається згори донизу, як і сам файл. Кожен рядок починається зі скороченого хешу коміту, далі йдуть інформація про автора, дата, початковий номер рядка і, нарешті, вміст рядка з файлу. git blame можна навести на файл у робочому дереві або на конкретний коміт (наприклад, HEAD~3), щоб дослідити старішу версію.
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) }Сценарії використання
- Визначити, звідки взявся рядок, щоб відкрити конкретний коміт, прочитати його повідомлення і зрозуміти задум, перш ніж змінювати чи скасовувати код.
- Швидко зібрати контекст про незнайомі файли — автора, час і початковий номер рядка. Так простіше ставити точні уточнювальні запитання або ділити роботу з командою.
- Відстежити регресії або встановити авторство: додай до знайденого коміту
git show, щоб побачити, коли саме з'явилася помилка; або перенеси дані про автора в рев'ю, журнали змін чи документацію.
Приклади
Показати, хто останнім змінював кожен рядок файлу в поточному робочому дереві:
git blame src/components/Header.tsxОбмежити вивід певним діапазоном рядків через опцію -L (початок і кінець включно):
git blame -L 25,40 src/components/Header.tsxЗнайти авторів рядків у версії файлу, яка існувала два коміти тому:
git blame HEAD~2 -- src/components/Header.tsxРозділювач -- необов'язковий, але він не дає Git сплутати шлях до файлу з назвою ревізії.
Додати до виводу email автора, щоб було простіше зв'язатися:
git blame --show-email src/components/Header.tsx.gitignoregit checkoutgit configgit taggit worktree