Почему журнал git не имеет значения по умолчанию для git log --follow?

Если мы когда-либо перемещали файл в другое место или переименовали его, вся его предыдущая история терялась в git log, если мы специально не используем git log --follow. Я думаю, что обычно ожидаемое поведение состоит в том, что мы хотели бы видеть и прошлую историю, а не "обрезать" после переименования или перемещения, поэтому есть причина, по которой git log не использует по умолчанию --follow флаг?

Ответ 1

Предположительно, потому что git log обычно используется для отображения общей истории фиксации, а не истории одного файла или пути. Опция --follow применима только в том случае, если вы смотрите на один файл (и не работает, когда вы называете несколько файлов). Поскольку это не самый распространенный случай, на самом деле нет смысла добавлять его в качестве значения по умолчанию.

Если вы хотите сделать это по умолчанию для себя, вы всегда можете сделать псевдоним:

git config --global alias.lf 'log --follow'

Теперь вы можете сделать git lf <filename>, чтобы получить нужное поведение.

Примечание.. Если вы хотите предложить изменение, которое вы запрашиваете в списке рассылки, и посмотреть, что думают люди, вы можете сделать это здесь. Или, что еще лучше, вы можете отправить патч!

Ответ 2

Примечание: начиная с git 2.6 (Q3 2015), git журнал может следить за историей по умолчанию для файла!

См. commit 076c983 (08 июля 2015 г.) Дэвид Тернер (dturner-tw).
(слияние Junio ​​C Hamano - gitster - в совершить 2dded96, 03 августа 2015)

log: добавить конфигурационную переменную < <23 >

Люди, которые работают над проектами с преимущественно линейной историей с частыми переименованиями файлов, могут всегда использовать "git log --follow" при проверке жизни содержимого, проживающего на одном пути.

Попросите команду вести себя так, как будто "--follow" была задана из командной строки, когда установлена ​​переменная конфигурации log.follow, и в командной строке есть один (и только один) путь..

git config log.follow true