Вы можете использовать строку пользовательского формата:
DateTime d = DateTime.Now; string dateString = d.ToString ("yyyyMMddHHmmss");
Замените «hh» для «HH», если вы не хотите 24-часового времени.
Я столкнулся с тем же вопросом несколько минут назад. Ни один из уже представленных ответов не касался реальной проблемы, которая избавляется от сообщения warning: tag 'foo' is really 'bar' here
и дает git describe
просто перечислить новое имя тега. Это особенно важно в моем случае, поскольку моя система сборки использует git describe
для записи в сборку, какие источники использовались для создания сборки.
Я могу реплицировать проблема:
$ git tag foo --annotate -m"original message"
$ git tag bar foo
$ git tag -d foo
$ git describe
warning: tag 'foo' is really 'bar' here
foo
(Флаг --annotate
выше избыточен, поскольку -m
подразумевает --annotate
, но я включил его для выделения.) Я попытался воспроизвести проблема с легким тегом, но не была в состоянии сделать это. Чтобы реплицировать проблему, необходима аннотация.
Некоторые из них включают в себя толкание предметов, которые уже подтолкнули, но я нахожусь в согласии с Дэвидом Калпом, когда он говорит :
Однако иногда бывает просто не стоит долговременной боли неточной (грязной) истории, а кратковременная боль
blockquote>
Как только вы застряли с
warning: tag 'foo' is really 'bar' here
, вы должны сделать:$ git tag bar bar -m"original message" --force $ git describe bar
При необходимости адаптироваться, если сообщение необходимо изменить.
Чтобы удалить старый тег, если он уже был нажат:
$ git push origin :refs/tags/foo
Чтобы обновить новый тег, если он уже был нажат:
$ git push origin refs/tags/bar
Избежать проблемы
Чтобы избежать проблемы, в первую очередь вам нужно создать
bar
с помощью:$ git tag bar foo -m"original message"
Повторить стандартную осторожность, когда кто-то предлагает переписывать историю (или в этом случае историю перезаписи), - если вы можете избежать этого, не делайте этого.
Однако, не стоит долговременной боли в неточной (беспорядочной) истории, и краткосрочная боль стоит того.
Если это так, в следующей статье приведены необходимые шаги: Как переименовать тег уже нажат на удаленный git Repo .
Основные шаги:
git tag new_tag old_tag
git push --tags
git push origin :refs/tags/old_tag
git tag -d old_tag
Нет, я не думаю, что это правильный рабочий процесс для тегов в git.
. Основное правило git: не смешивайте с чем-то, что вы уже нажали.
Поскольку вы уже нажали на тег 1.0, вы не хотите переименовывать его в 1.5 локально, а затем пытаетесь его вытолкнуть. Оставьте тэг 1.0 для потомков, создайте новый тег 1.5 и нажмите его тоже. И действительно - для чего нужны теги. Таким образом, вы можете вернуться через 6 месяцев и воссоздать то, что ваше программное обеспечение было похоже на версию 1.0.
git tag bar bar -m"original message" --force
, вы можете просто сделатьgit push --force origin refs/tags/bar
после этого, нет необходимости удалять. Фактически удаление удалит ваш обновленный тег, и вы больше не сможете его вытолкнуть. – jmiserez 29 December 2016 в 11:06tag '%s' is really '%s' here"
выходит изgit describe
и применяется только к аннотированным тегам, поэтому вы должны начать с аннотированного тега, чтобы воспроизвести проблему. Это связано с внутренней реализацией: аннотированный тег фактически представляет собой пару сущностей, которые должны совпадать, и использованиеgit tag <new-name> <existing-annotated-tag>
создает один новый несогласованный объект (легкий тег name i>) для существующего аннотированного тег object i>, который вставляет старое имя. – torek 8 August 2018 в 15:16git tag bar foo^{} -m "..."
: суффикс^{}
означает «разрешить тег для базового объекта». – torek 8 August 2018 в 15:19