Виноват - предыдущие коммиты? - PullRequest
335 голосов
/ 24 февраля 2011

Можно ли увидеть, кто редактировал определенную строку до коммита, сообщенного git blame, как история коммитов для данной строки?

Например, я запускаю следующее (в превосходном uncrustify проекте):

$ git blame -L10,+1 src/options.cpp
^fe25b6d (Ben Gardner 2009-10-17 13:13:55 -0500 10) #include "prototypes.h"

Как мне узнать, кто редактировал эту строку до commit fe25b6d? И кто его редактировал до того коммита?

Ответы [ 12 ]

0 голосов
/ 11 июля 2014

Построить на stangls ответить , я поместил этот скрипт в свой PATH (даже в Windows) как git-bh:

Это позволяет мне смотретьдля всех коммитов, где было задействовано слово:

git bh path/to/myfile myWord

Скрипт:

#!/bin/bash
f=$1
shift
csha=""
{ git log --pretty=format:%H -- "$f"; echo; } | {
  while read hash; do
    res=$(git blame -L"/$1/",+1 $hash -- "$f" 2>/dev/null | sed 's/^/  /')
    sha=${res%% (*}
    if [[ "${res}" != "" && "${csha}" != "${sha}" ]]; then
      echo "--- ${hash}"
      echo "${res}"
      csha="${sha}"
    fi
  done
}
0 голосов
/ 16 февраля 2014

Я использую этот маленький скрипт bash для просмотра истории обвинений.

Первый параметр: файл для просмотра

Последующие параметры: передан в git blame

#!/bin/bash
f=$1
shift
{ git log --pretty=format:%H -- "$f"; echo; } | {
  while read hash; do
    echo "--- $hash"
    git blame $@ $hash -- "$f" | sed 's/^/  /'
  done
}

Вы можете указать такие параметры, как -L 70, + 10 , но лучше использовать поиск по регулярным выражениям в git blame, поскольку номера строк обычно «меняются» с течением времени.

...