git log исключает переименования

Я могу перечислить коммиты для файла, даже если он был переименован или перемещен

git log --follow foo.sh

Тем не менее, я хотел бы "следить" за файлом, а только фиксировать список, где файл был фактически изменен. Что-то вроде

git log --follow --exclude-renames foo.sh

3 ответа

Решение
git log --follow --name-status --oneline foo.sh | sed 'h;N;/\nR/d;g'
  • скопировать строку коммита для хранения пробела
  • читать во второй строке
  • если строка начинается с R найдено, удалите пространство шаблона и начните следующий цикл, иначе скопируйте удерживающее пространство в пространство шаблона

благодаря jthill

только что нашел--diff-filterопция, с помощью которой вы можете исключить переименования

      --diff-filter=r

так,

      git log --follow --diff-filter=r foo.sh

спасибо за ответ @Zombo--name-statusвариант

Немного похоже на " красиво отображать историю переименования файлов в git log", вы можете добавить --name-status чтобы:

  • не выбирать (grep -v переименовывает: статус 'Rxxx", сохраняя сложение"Aили модификацияM")
  • все еще следуйте за файлом через другое имя

Но это все равно будет включать в себя последующую обработку команды git log (с помощью grep и / или sed), чтобы получить желаемый результат: нет нативного '--exclude-renamesвариант как

Другие вопросы по тегам