Обратите внимание, что вы на самом деле просите что-то хитрое.Предположим, что B
представляет коммит, сделанный до указанной даты, а A
представляет коммит, сделанный после него, и ваша история выглядит следующим образом:
- B - B - B - A - A - A - A
\ /
B - B - A - A
Где вы хотите свой тег?Вероятно, при этом совершить слияние.Это уже сложно определить.Теперь представьте, что слияния являются более сложными, что некоторые коммиты, сделанные до указанной даты, не были перенесены в центральное репо до и после, и так далее.Вы можете придумать определение, но это не что-то простое и не концепция, которая каким-либо образом встроена в Git.
Конечно, если ваша история линейна, и вы не беспокоитесь о том, когда что-то случитсябыли опубликованы, будет легко найти коммит, который вы можете получить с помощью:
git rev-list --before='2012-01-01' -n 1 <branch>
(Там также --after
, чтобы найти все коммиты после указанной даты.)
В любом случае, это немного не относится к делу;То, к чему вы должны стремиться с помощью тегов, это маркировка версии, этапов, стабильных точек, версий, которые были выпущены или распространены, и так далее.Конечно, лучше всего помечать их по мере их появления, но вы все равно сможете разобраться с предыдущими версиями.Это те теги, которые действительно будут полезны.
Если вы все еще хотите попытаться создать ретроактивные теги на основе дат, а ваша история не проста, совет Адама - самый близкий к вам.Скорее всего, получится, но обратите внимание на предостережения, которые я описал в комментариях.Обратите внимание, что для того, чтобы это действительно имело смысл, вам нужно знать, что имелось в этот день центральное хранилище, а не локальное.По умолчанию рефлоги не включены в пустых репозиториях, но если вы их там включили, вы можете получить соответствующий коммит, перейдя в этот пустой репозиторий и запустив git rev-parse master@{2012-01-01}
.В противном случае следующая лучшая вещь в вашем локальном репозитории будет git tag v1.0 origin/master@{2012-01-01}
- давая вам позицию вашей ветви отслеживания на эту дату.