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
вариант как