日記帳
本ページはプロモーションが含まれています
カテゴリー
Links
blog(ブログ)マスター
アンドロイドの巣
ゼロから始めるベランダ菜園
タイトル
2024年11月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

gitで扱える最大日付と最小日付

カテゴリー: General
2023-08-03
タイトル

執筆:2023.08.03
編集:2023.08.03


まとめ

gitは、(UTC時間)
1970-01-01 00:00:00  ~ 2099-12-31 23:59:59
の範囲で使えます。

gitの通常使用で問題は発生しませんが、ほかのバージョン管理システムから移行する際は注意が必要です。


コマンドラインから日本時間で日付指定したい場合は、
'2023-08-03 00:00:00 +0900' のようにします。

【gitで扱える最大日付】

32bit
  2038-01-19 03:14:07

  コミットの日付指定は2099-12-31 23:59:59までできるが、2038年1月19日03:14:07(UTC)を超えた場合、オバーフローで自動的にDate: Thu Jan 1 00:00:00 1970 +0000になる。

32ビットの符号付き整数で表されるUnix時間の最大値は、2038年1月19日03:14:07(UTC)です。この時刻を超えると、32ビットの符号付き整数がオーバーフローして負の値になります。これは「2038年問題」として知られています。

64bit
  2099-12-31 23:59:59


【gitで扱える最小日付】

 1970-01-01 00:00:00 +0000


入力として受け付ける最大日付は、
ソースコードのgit/date.c:time_t tm_to_time_t(const struct tm *tm)にコメントとして書かれています

if (year < 0 || year > 129) /* algo only works for 1970-2099 */


確認方法 その2(人海戦術)
空フォルダを用意してコミットするだけ。

手順

1. フォルダを用意する
   mkdir test

2. フォルダをshellやgitシェルなどで開く
   cd test

3. コミットする

$ export GIT_AUTHOR_DATE="2100-01-01 00:00:00"; export GIT_COMMITTER_DATE={$GIT_AUTHOR_DATE}; git commit -m "$GIT_AUTHOR_DATE"

  問題ない場合は、
$ export GIT_AUTHOR_DATE="2099-12-31 23:59:59"; export GIT_COMMITTER_DATE={$GIT_AUTHOR_DATE}; git commit -m "$GIT_AUTHOR_DATE"
On branch master

Initial commit

nothing to commit (create/copy files and use "git add" to track)
と表示される。

コミットできない場合は
fatal: invalid date format: 指定した日時
と表示される

ほんとうにコミットしたい場合は、 --allow-empty を加える。
今回はテスト目的なのであえてつけていない。

コミットとgit logすると実際の日付がわかる。

キーワード
Maximum and minimum dates that can be handled by git
git 最大日付 最小日付 日付の範囲

ブログ内 関連記事: gitで扱える最大日付と最小日付

 関連記事はありません。

ブログ内 関連記事: gitで扱える最大日付と最小日付

 関連記事はありません。
PR

[PR]