git не отслеживает время создания ветки. Самое близкое, что вы можете получить, это то, что если вы сделаете определенные предположения о топологии коммитов, вы можете проверить дату (ы) первого коммита, который, по-видимому, относится к ветви.
Предположим, у вас есть
x -- o -- x -- x <--(master)
\
A -- B -- c <--(feature)
Теперь может показаться «очевидным», что feature
было создано в o
, а затем A
было зафиксировано в feature
(за которым следуют B
и C
). Это не обязательно верно, и git не отслеживает какую-либо информацию, которая скажет вам, если это правда, потому что в git ветка - это просто указатель на один коммит (с соглашением, что оно обычно перемещается определенным образом, когда коммиты добавляются ). В этом случае feature
указывает на C
, и это все, что мы точно знаем о feature
.
(Мы могли бы также знать, как ветвь перемещалась локально, но только если она перемещалась локально. Мы могли бы также знать кое-что о связи ветки с удаленным, и я думаю, вы могли бы попытаться извлечь информацию из удаленного. ... но он вообще не знает, когда была создана ветвь.)
Но интуитивно многие думают, что feature
состоит из коммитов A
, B
и C
(и, возможно, имеет собственную жизнь, которая началась в o
). В некоторых инструментах это было бы точно; это просто не тот случай в git.
Таким образом, вы можете использовать либо даты коммиттера, либо даты коммитов автора, в зависимости от того, что вы пытаетесь понять. Вот несколько способов взглянуть на это:
Вы можете использовать A
дату автора. Если ветвь перебазирована, она должна остаться прежней и в этот момент может предшествовать дате автора ее родителя; так что это не обязательно скажет вам, когда топологическая точка ветвления может быть впервые найдена в o
, но это даст справедливую оценку того, когда началась разработка для ветки. Вы можете найти это значение как
git rev-list --format=%ad master..feature |tail -n1
Если вы можете исключить перебазирование, вы можете оценить, что разработка началась где-то до A
даты автора, а иногда - после o
s даты автора. Вы можете получить o
дату автора как
git rev-list --format=%ad -n1 $(git merge-base master feature)
В любом случае вы можете использовать даты фиксации вместо дат автора; но в этом случае имейте в виду, что перебазировка feature
создает новые коммиты (A'
вместо A
и т. д.) и поэтому даты коммитов изменяются. Так что, если вы хотите знать, когда началась разработка, это менее надежно; но если вы хотите знать, когда топологическая точка ветвления появилась в o
, возможно, это более надежно. Вы должны использовать %cd
вместо %ad
из вышеприведенных команд.