Вы когда-нибудь находили ошибку, вызывающую изменение строки в вашем коде, и задавались вопросом, кто внес изменения в эту строку? К счастью, в git есть команда для этого! git blame позволяет выбрать файл и показать, кто последним изменил каждую строку. Если вам интересно, это называется git blame потому что это позволяет вам возложить вину за строку взлома кода, которую вы исследуете.

Чтобы узнать, кто изменил строку, просто запустите следующую команду, где myfile.txt это файл, который вы хотите проверить:

git blame myfile.txt
Войти в полноэкранный режим

Выйти из полноэкранного режима

Если вас интересует формат git blameон разбивается следующим образом:

^665221a (Johnny Simpson 2022-04-30 20:58:04 +0100  10) import { v4 as uuid } from 'uuid';
^          ^                                         ^
|          |                                         |
Commit ID  |                                     Line number
           |
         Author and timestamp
Войти в полноэкранный режим

Выйти из полноэкранного режима


Использование git обвинять в определенной строке

Это действительно полезно, но если вы хотите отточить конкретную строку, вы можете использовать -L вариант. Например, если вы хотите просмотреть историю изменений между строками 1 и 5, вы должны сделать следующее:

git blame index.js -L 1,5
Войти в полноэкранный режим

Выйти из полноэкранного режима

Или, если вы хотите найти историю изменений между строками 20 и 40, вы можете сделать следующее:

git blame index.js -L 20,40
Войти в полноэкранный режим

Выйти из полноэкранного режима


Другие полезные параметры git обвинять

Так же есть куча других полезных git blame параметры, которые вы, возможно, захотите использовать. Вот некоторые из тех, которые я использую чаще всего, и то, что они делают.


Отображение электронной почты автора с помощью git fault

Все, что вам нужно, чтобы показать адрес электронной почты только автора, это использовать -e вариант:

git blame index.js -e
Войти в полноэкранный режим

Выйти из полноэкранного режима

Создание такого вывода:

^665221a (<some@email.com> 2022-04-30 20:58:04 +0100   8) import { fileURLToPath } from 'url'
Войти в полноэкранный режим

Выйти из полноэкранного режима


Игнорирование whitepsace с виной git

Вы также можете игнорировать пробелы с помощью git blame, если ваш код содержит их много. Для этого можно использовать -w вариант:

git blame index.js -w
Войти в полноэкранный режим

Выйти из полноэкранного режима


Форматирование строк цветом с помощью git fault

По умолчанию, git blame создает стену белого или черного текста. Если вы хотите различать различные коммиты и изменения по цвету, вы можете использовать --color-lines или же --color-by-age:

  • --color-lines окрашивает строки, если предыдущая строка была другим коммитом.
  • --color-by-age окрашивает линии по возрасту.


Отображение имен файлов с помощью git fault

Чтобы показать имя файла с git blameиспользовать -f вариант. Это покажет имя файла вместе с идентификатором фиксации.

git blame index.js -f
Войти в полноэкранный режим

Выйти из полноэкранного режима

Будет производить вывод следующим образом:

^665221a index.js (Johnny Simpson 2022-04-30 20:58:04 +0100  16) import dotenv from 'dotenv'
Войти в полноэкранный режим

Выйти из полноэкранного режима


Отображение изменений строки снизу вверх (в обратном порядке) с помощью git fault

Вы также можете показать изменения строки в обратном порядке с помощью git blame, то есть начиная снизу и поднимаясь вверх. Просто добавьте --reverse вариант вашей команды:

git blame index.js --reverse
Войти в полноэкранный режим

Выйти из полноэкранного режима