LoginSignup
10
8

More than 5 years have passed since last update.

Git 古いコミットの日付だけ新しくする

Posted at

コミットの順番を入れ替えたいことがある(バグを修正したあとテストを書いたが、 CI 上で再現テストのコミットを一度 fail させてから修正のコミットで pass することを示したい、など)

rebase -i でコミットの順番を入れ替えられるが、日付はオリジナルのコミット順のままなので、 git log の並び順が時系列にならなくてちょっと気持ち悪い。そういうときに、見た目と時系列を合わせる方法。

git commit --date オプションを使う。 --date=now と指定できて便利。
https://git-scm.com/docs/git-commit

reflog から cherry-pick -> 日付を変更して再び commit する場合

$ git cherry-pick c3fe8ff
[fix/XXXX 47e1d1d] Lorem ipsum dolor sit amet, consectetur adipisicing elit,
 Date: Fri Jan 15 16:30:34 2016 +0900
 1 file changed, 1 insertion(+), 1 deletion(-)

$ git commit --amend -C head --date=now
[fix/XXXX 4928054] Lorem ipsum dolor sit amet, consectetur adipisicing elit,
 Date: Fri Jan 15 16:55:11 2016 +0900
 1 file changed, 1 insertion(+), 1 deletion(-)

一度 stage し、改めて commit するとき前と同じ commit message を使いたい場合

# -C をつけると日付も指定した元 commit と同じになってしまうが...
$ git commit -C c3fe8ff
[fix/XXXX b454f1d] Lorem ipsum dolor sit amet, consectetur adipisicing elit,
 Date: Fri Jan 15 16:30:34 2016 +0900
 1 file changed, 1 insertion(+), 1 deletion(-)

# --date=now をつけると日付を変更してくれる(メッセージは同じものを再利用してくれる)
$ git commit -C c3fe8ff --date=now
[fix/XXXX 7c8d3eb] Lorem ipsum dolor sit amet, consectetur adipisicing elit,
 Date: Fri Jan 15 16:53:20 2016 +0900
 1 file changed, 1 insertion(+), 1 deletion(-)

元ネタ http://stackoverflow.com/questions/454734/how-can-one-change-the-timestamp-of-an-old-commit-in-git#comment8900550_5017265

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8