нативное решение:
git log --diff-filter=A --follow --format=%aD -1 -- <fname>
Указывает последнюю «дату создания» файла в хранилище и делает это независимо от того, переименовывает / перемещает файл.
-1
является синонимом --max-count=1
и ограничивает число коммитов для вывода (в нашем случае не более одного).
Это ограничение необходимо, поскольку файл может быть добавлен более одного раза. Например, его можно добавить, затем удалить, а затем снова добавить. В таком случае --diff-filter=A
выдаст несколько строк для этого файла.
Чтобы получить первую дату создания в первой строке, мы должны использовать опцию --reverse
без ограничений (поскольку limit применяется перед оформлением заказа).
git log --diff-filter=A --follow --format=%aI --reverse -- <fname> | head -1
%aI
дает дату в строгом формате ISO 8601 (например, 2009-06-03T07:08:51-07:00
).
Но эта команда не работает должным образом из-за известной ошибки в Git (см. " - follow игнорируется, когда используется с --reverse " диалогом в git maillist). Таким образом, мы вынуждены некоторое время работать вокруг, чтобы получить первую дату создания.
git log --diff-filter=A --follow --format=%aI -- <fname> | tail -1