Как я могу игнорировать передачу информации о часовом поясе в моей фиксации?

В последнее время я разветкил репозиторий, размещенный github, со спонсорами, распространяющимися по всему миру, и выяснил, что каждый журнал фиксации содержит информацию о часовом поясе коммитера.

2013-11-07 02:31:41 +0545 <-- This committer is living in Nepal. Surely.
2013-11-04 12:58:36 -0600 <-- This committer is living in CST or Ecuador or Chili or ...
2013-10-31 10:36:36 +0700 <-- This committer is living in Indonesia or Thai or Mongolia or Laos or Australia or ...
:

Я знаю, что можно скрыть это, отредактировав выходную форму (например, git: часовой пояс и формат timestamp), но это скрывает то, что фактически сохраняется в репозитории github, только от моего глаза. Каждый часовой пояс коммитера наверняка сохраняется на сервере github.

Итак, мои вопросы:

  • Зачем нужен коммиттер, необходимый для фиксации? Для чего его используют? Достаточно ли UTC?
  • Существуют ли какие-либо опции, чтобы игнорировать настройку часового пояса MY компьютера при совершении? Я не хочу устанавливать часовой пояс компьютера в UTC, только потому, что git неявно совершает его.

Ответ 1

Вы можете использовать эту команду для фиксации в UTC:

git commit --date="`date --utc +%Y-%m-%dT%H:%M:%S%z`"

Вы также можете использовать его под удобным названием:

git config --global alias.commitutc '!git commit --date="$(date --utc +%Y-%m-%dT%H:%M:%S%z)"'

И сделайте git commitutc.

Для более подробного объяснения посмотрите это сообщение в блоге.

Ответ 2

При фиксации git хранится временная метка Unix (секунды с 1/1/1970 UTC) и локальное смещение коммиттера. Вы можете переопределить смещение, но вы также должны указать дату.

git commit --date 1401179025 -0700

Поддерживаются несколько форматов, как описано здесь. Я предпочитаю формат ISO-8601, который выглядит следующим образом:

git commit --date 2014-05-27T01:23:45-07:00

Вы можете установить смещение, как вам нравится. Используйте ноль для UTC. Лично я считаю, что это не нужно. Это фактически уменьшает количество информации в журнале. Вы можете заботиться только о точном моменте времени, но, возможно, также может быть важно, какое время это было для этого конкретного коммиттера. Например, возможно, вам хотелось бы узнать, совершилось ли это лицо рано утром или поздно ночью. Если вы не храните локальное смещение, эта информация будет потеряна, и ее хранение не повредит.

Если ваша основная проблема заключается в том, что просмотр журнала git не выравнивает все коммиты в один часовой пояс, рассмотрите возможность настройки вывода журнала с помощью параметров --date в команде журнала:

git log --date=local

В приведенном выше примере используются корректировки фиксации для корректировки даты фиксации в вашем локальном часовом поясе.

Я не видел ничего, что бы настроить его на UTC напрямую, но вы можете настроить свой часовой пояс на UTC, а затем использовать эту команду.