Подтвердить что ты не робот

Git виновная строка

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

Чтобы уточнить

Оригинальный файл- > Линия Добавлена ​​в файл и зафиксирована → Многие другие коммиты добавляют другие строки и меняют код

4b9b3361

Ответ 1

вы можете использовать git blame -l filename для получения номера sha1 при изменении строки

вы также можете использовать --reverse:

- обратный

Пройдите историю вперед, а не назад. Вместо того, чтобы показывать версию, в которой появилась строка, это показывает последнюю ревизию, в которой существовала строка. Для этого требуется ряд изменений, таких как START..END, где путь к вине существует в START.

см. http://www.kernel.org/pub/software/scm/git/docs/git-blame.html

Ответ 2

Предполагая, что строка не изменилась с момента ее добавления, просто:

git blame <that file>, а затем найдите строку, в которой вы находитесь.

Если строка была изменена с момента ее добавления, вы можете git blame найти последний коммит, на котором была изменена строка, а затем git checkout <sha>~1 (где sha - это та, которая отображается в оригинал git blame) и git blame снова, чтобы вернуться в историю для этой строки.

Ответ 3

Вы можете обвинить конкретную строку кода, как это.

git log -S 'THE-CODE' 

Ответ 4

Кажется, вы можете использовать git log -L для проверки файла. Например, я хочу проверить коммиты для file.c, строка от 55 до 60:

git log -L55,60:file.c