Edited at

git commit --amend で今の日時にしてcommitし直す

More than 5 years have passed since last update.


やりかた

一時的な作業内容の保存を git commit -m 'tmp' などとしたり git-now を使ってとりあえずcommitすると思います。

その後コミットメッセージを変えたりするときに git commit --amend をしますが、--amend ではcommit dateは変化しますがauthor dateは変化しません。

% git commit

[master 824662c] hoge
Date: Sat Nov 8 22:25:44 2014 +0900
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 foo
% date
Sat Nov 8 22:33:02 JST 2014
% git commit --amend
[master 2a545e7] hoge
Date: Sat Nov 8 22:25:44 2014 +0900
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 foo

そこで、--date オプションを使うとauthor dateが設定できます。date コマンドの出力を値にすると今の日時がauthor dateになります。

% date                              

Sat Nov 8 22:34:57 JST 2014
% git commit --amend --date "`date`"
[master 2df83ad] hoge
Date: Sat Nov 8 22:34:58 2014 +0900
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 foo

ちなみに、Stack Overflowに date -R を使ういいと書いてありました。

Update git commit author date when amending - Stack Overflow

GNU coreutilsのdateには -R オプションがあり、これはRFC形式で日時を出力してくれるものです。

% date -R

Sat, 08 Nov 2014 22:42:53 +0900

OS Xのdate(というよりはBSDの)には、-R オプションがありません。試しにつけずにやってみると、動いたのでこのままでよさそうです。


あわせて読みたい

Git のコミットのタイムスタンプには author date と committer date の 2 種類があるという話 - ひだまりソケットは壊れない

よく使うgit command - Qiita