Что такое формат параметр --дата коммитов



Мне нужно перезаписать дату фиксации git, вся документация указывает на параметр --date, но затем оставляет один без ключа к соответствующему формату. Я пробовал каждую перестановку, о которой я могу думать, и я получаю ошибку "fatal: invalid date format:" для каждого из них.

604   2  

2 ответов:

Git 2.6+ (Q3 2015) добавить новую опцию.

посмотреть commit e4f031e (30 июня 2015), и commit aa1462c,commit a5481a6,commit b7c1e11 (25 июня 2015) by Джефф Кинг (peff).
(слитый Junio C Hamano--gitster-- in commit d939af1, 03 авг 2015)

вводим "формат" дата-режим

это подает формат непосредственно в strftime.
Помимо того, что он немного более гибкий, главным преимуществом является то, что ваша система strftime возможно, вы знаете больше о предпочтительном формате вашего языка (например, как пишутся дни недели).

--date=format:... кормит формате ... в системе strftime.
Используйте --date=format:%c чтобы показать дату в предпочтительном формате вашего системного языка.
Смотрите strftime руководство для полного список заполнителей формата.

Davide Cavestro предлагает в комментариях пример:

git commit -m "Test" --date=format:relative:5.hours.ago 

оригинальный ответ (середина 2014)

The (введена в commit 02b47cd в декабря. 2009, для git1.7. 0) использует тот же формат, что и для GIT_AUTHOR_DATE, С форматами дат, протестированными в commit 96b2d4f:

там вы можете увидеть различные формат принято:

  • rfc2822: Mon, 3 Jul 2006 17:18:43 +0200
  • iso8601:2006-07-03 17:18:43 +0200
  • local:Mon Jul 3 15:18:43 2006
  • коротко: 2006-07-03 (не в 1.9.1, работает в 2.3.0)
  • родственник: см.commit 34dc6e7:

    5.seconds.ago, 
    2.years.3.months.ago, 
    '6am yesterday'
    
  • raw: см. commit 7dff9b3 (git 1.6.2, март 2009)
    внутренний формат raw git-секунды с эпохи плюс часовой пояс
    (иначе говоря:'date +"%s %z"' формат)

  • по умолчанию: Mon Jul 3 17:18:43 2006 +0200

ADTC спрашивает и ответы в комментариях:

это принять 2006-07-03 15:18:43 для местных?

Да, он работает, и он автоматически принимает местный часовой пояс.
С этим форматом мне не нужно беспокоиться, какой день недели это (Sun,Mon, etc).

формат даты недокументирован в документация/дата-форматы.txt (man git commit), и очень "гуманно" разбирал.

единственное, что работает, это чтение источника под дата.c и попробовать его.

пункты, не упомянутые VonC на 2.3.0:

  • только цифры анализируются в зависимости от количества цифр:

    • 2 цифры: 19YY, для YY >= 73, текущий месяц, день и время. Ошибки или текущая дата в противном случае.

    • 4 цифры: гггг, для гггг >= 1973,

    • > 8 цифр до некоторого небольшого предела (TODO который?): Время UNIX (секунды с 1970 года)

  • @<digits> +0000: время UNIX.

    это кажется лучшим способом ввести время UNIX напрямую.

    2**64 - 2 (TODO почему не -1 ?) было максимальное значение, которое не приводит к ошибке фиксации. Этот штамп хранится в C длиной.

    git log показывает очень большие значения (где-то около 2^55 TODO где?) как 1970 год, хоть и git cat-file -p HEAD показывает, что правильный номер был сохранен, поэтому это похоже на ограничение преобразования даты.

    для чего-нибудь большего, чем 2**63 - 1, самый большой положительный знак долго, пытаясь нажать на GitHub терпит неудачу с date causes integer overflow. фиксация на эту дату на GitHub (GitHub не может показать действительно большие даты для некоторых причина)

    VonC указал, что это позор, поскольку он блокирует отрицательные даты можно ли установить фиксацию git, чтобы иметь метку времени до 1970 года? который может быть использован для миграции старого программного обеспечения в Git.

  • tea: сегодня в 17: 00: -)

Comments

    Ничего не найдено.