[Defi] Master and Servant by Franck Mahon, on Flickr
IQ探偵ムー 1 そして、彼女はやってきた。 (ポプラカラフル文庫)
posted with amazlet at 18.02.17
あなたはとある事件の容疑者だ。 悪いことに、事件当日の居場所を証明できないでいる。
というか、ここだけの話ホントはアナタが真犯人。だからこの際アリバイ工作するしか無いようだ・・・
そこであなたは、Gitのコミット日時を書き換える(え?)・・・
(という設定で以下進行ってなんだそりゃ?)
コミット日時を偽装する
ってな時に、Gitのコミット日時を偽装して、簡単にアリバイ工作(?)できるスクリプトが、これ(↓)ですね。
git-giso
#!/bin/sh if [ "$1" = "" ]; then echo "Error: datetime need to be specified" exit 1 fi echo git commit --amend -C HEAD --date="$1" && \ git commit --amend -C HEAD --date="$1" && \ echo && \ echo git rebase HEAD~ --committer-date-is-author-date && \ git rebase HEAD~ --committer-date-is-author-date
このファイルに実行属性を付けてPATHの通った所へINSTALL。
実行例
実行すると以下のようになりますよ(極秘情報は伏せてある)。
$ git-giso '2018-02-17 20:26:45' git commit --amend -C HEAD --date='2018-02-17 20:26:45' [working-branch abcdefg] #$%S&Gys7&%$# Date: #$$ Feb %& $%#2#$$%&'(&%%% n file changed, 4 insertions(+) git rebase HEAD~ --committer-date-is-author-date Current branch working-branch is up to date, rebase forced. First, rewinding head to replay your work on top of it... Applying: %&%S$%S&&D'F/??./
それは、ヒ・ミ・ツ
理由は明かせないけれど、コミット日時を書き換えたいときがあります(よね?)。あるんです。
絡み合う2つの日時・・・
- Gitのコミットには
author-date
とcommitter-date
という2つの日付がありまして、最初にコミットした時、両方同時刻に設定されます。 - でも、
git commit --amend
した時には、committer-date
しか書き換わらないの・・・ - てことで、
git commit --amend -C HEAD --date='<datetime>'
としてauthor-date
を書き換える。 - しかし、
committer-date
が、その時の時刻になってしまっているので、 git rebase HEAD~ --committer-date-is-author-date
でcommitter-date
をauthor-date
に一致させるというわけです。
ふう・・・
masterブランチでやっちゃダメ
これ、amend
してrebase
するので、ワーキングブランチでやりましょう。
master
ブランチでコレやって、push -f
とかしちゃったら、市中引き回しの上獄門ですから気をつけて。
なんで縄文・・・
名探偵コナン歴史まんが 日本史探偵コナン1 縄文時代~原始世界の冒険者(タイムドリフター)~ (名探偵コナン・学習まんが)
posted with amazlet at 18.02.17