Gitでタイムスタンプ(Timestamp)をコミット時に変更する方法

Git

Gitではタイムスタンプ(Timestamp)を保持しないらしいです。

今回、Gitでタイムスタンプをコミット時に変更する方法を調べてみました。

スポンサーリンク
スポンサーリンク

Gitではタイムスタンプを持たない

Subversionでは、

use-commit-times=true

というのがあって、コミット時のタイムスタンプを利用できます。

一方、Gitでは、調べる限りタイムスタンプを保持していないので、このようなオプションは存在しないらしいです。

ただ、

$ git log

では履歴を表示出来るので、なんとかスクリプトを作って対応してみたいと思います。

Git Bash文字化け対策

Git Bashでは日本語が文字化けするので、まず文字化け対策をします。

(1) Git Bashでlsコマンドの日本語文字化け対策

以下の方法は、

SubversionからGit移行時に苦労したこと、空のフォルダの移行、文字化け対策
最近、巨大なSubversionリポジトリをGitに移行する作業を行っており、その際に学んだからフォルダの移行方法、...

にもまとめました。

Git Bashを立ち入力して、以下のコマンドを順番に入力することで、ホームディレクトリに.bashrcを作成します。

(Git Bashの画面で)
$ cd ~
$ touch .bashrc

その後、上記で作成したファイル

.bashrc に ls のエイリアスを記述しました。

(ファイル .bashrc に以下を記述)
alias ls='ls --show-control-chars'

(2) Git Bashの日本語設定

Git Bashを立ち上げて、以下のように入力します。

(Git Bashの画面で)
$ git config --global core.quotepath false

これでもまだ問題があって、

$ git archive master -o aaa.zip

とかすると、zipファイルの中の日本語ファイルは文字化けするようです。

TortoiseGitではzipファイルにアーカイブするので、日本語は文字化けしてしまいます。

この対策はよくわからないので、取りあえずは、zipファイルにarchiveしないようにします。

Gitリポジトリのタイムスタンプを設定するシェルスクリプト

$ git clone

を実行した直下のフォルダにて以下のシェルスクリプトを実行します。

$ git ls-files

で、ファイルの一覧を取得しています。

$ git log --pretty=format:%ci -n1

で、そのファイルのコミット日付を取得しています。

まとめ

Gitの内部仕様としてタイムスタンプを保持しないのは理解するとしても、コマンドラインからデフォルトでこれぐらいのオプション用意して欲しいなぁ。

Gitについてのおすすめの本

↓Gitについてのおすすめの本はコチラ

Git