Что делает git виноват?

Я видел много вопросов о методах использования git blame но я действительно не понимаю их.

Я вижу кнопку blame поверх файлов на интерфейсе github. При нажатии на него, он показывает некоторые различия с именами пользователей на левой панели. Что это означает?

Почему на самом деле используется Git Blame, кроме GitHub?

Ответ 1

Из git -scm http://git-scm.com/docs/git-blame

Обозначает каждую строку в данном файле информацией из ревизии, которая в последний раз модифицировала строку. Необязательно, начинайте аннотирование с данной ревизии.

Если указано один или несколько раз, -L ограничивает аннотацию запрошенными строками.

Пример:

[email protected]:~# git blame .htaccess
...
^e1fb2d7 (John Doe 2015-07-03 06:30:25 -0300  4) allow from all
^72fgsdl (Arthur King 2015-07-03 06:34:12 -0300  5)
^e1fb2d7 (John Doe 2015-07-03 06:30:25 -0300  6) <IfModule mod_rewrite.c>
^72fgsdl (Arthur King 2015-07-03 06:34:12 -0300  7)     RewriteEngine On
...

Обратите внимание, что git blame не показывает историю изменений в хронологическом смысле. Он показывает только, кто был последним человеком, который изменил строку в документе до последнего фиксации в HEAD.

То есть, чтобы просмотреть полную историю/журнал строки документа, вам нужно запустить git blame path/to/file для каждой фиксации в git log.

Ответ 2

Команда объясняет себя довольно хорошо, чтобы выяснить, кто из сотрудников написал конкретную строку или разрушил проект, чтобы вы могли винить их:)

Ответ 3

Из GitHub https://help.github.com/articles/using-git-blame-to-trace-changes-in-a-file

Команда вины - это функция Git, призванная помочь вам определить, кто внесены изменения в файл.

Несмотря на свое негативное звучание, Git обвинение на самом деле довольно безвредный; его основная функция - указать, кто изменил строки в файле и почему. Это может быть полезным инструментом для выявления изменений в вашем коде.

В основном git-blame используется, чтобы показать, какая версия и автор в последний раз модифицировали каждую строку файла. Это похоже на проверку истории разработки файла.

Ответ 4

Команда git blame используется, чтобы узнать, кто/какой коммит отвечает за последние изменения, внесенные в файл. Автор/коммит каждой строки также можно увидеть.

git blame filename (принимает ответственность за изменения для всех строк в коде)

git blame filename -L 0,10 (фиксирует ответственность за изменения со строки "0" на строку "10")

Есть много других вариантов обвинения, как правило, они могут помочь.

Ответ 5

Команда git blame комментирует строку с информацией из ревизии, которая последний раз модифицировала строку, и... с Git 2.22 (Q2 2019) будет делать это быстрее из-за исправления производительности вокруг " git blame ", особенно в линейной истории (что является нормой, для которой мы должны оптимизировать).

См. Коммит f892014 (02 апреля 2019 г.) Дэвида Каструпа (fedelibre).
(Объединено Junio C Hamano - gitster - в коммите 4d8c4da, 25 апреля 2019 г.)

blame.c: не роняйте blame.c блобы

Когда у родительского большого двоичного объекта уже есть чанки, поставленные в очередь за обвинение, удаление большого двоичного объекта в конце одного шага обвинения сразу же приведет к его перезагрузке, удвоив количество операций ввода-вывода и распаковав при обработке линейной истории.

Хранение таких родительских больших двоичных объектов в памяти кажется разумной оптимизацией, которая должна вызывать дополнительное давление памяти, главным образом, при обработке слияний из старых веток.