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