git ファイルタイムスタンプ通りにコミットする方法
カテゴリー: バージョン管理/git
2015-11-25
git ファイルタイムスタンプ通りにコミットする方法
方法
(1) 古い順に1個ずつコミットして、日時を更新
git filter-branch --env-filter '
if [ $GIT_COMMIT = "番号" ]; then
export GIT_AUTHOR_DATE="変えたい日付"
export GIT_COMMITTER_DATE="${GIT_AUTHOR_DATE}"
fi'
日付は
git log
または
php -nr " date_default_timezone_set('japan'); echo date(DateTime::RFC2822,strtotime('2015/1/1 0:0:0'));"
問題がなければ、バックアップを削除する
git show-ref | grep refs/original/refs/heads
git update-ref -d refs/original/refs/heads/master
コメントとして、日時をいれているので、移動してタイムスタンプがおかしくなった時もログからいつのかわかります。
方法 (2) dumpして書き換える
既存のリポジトリに追加する場合は、
出来上がったリポジトリを
remote add 登録してfetchします。
これで、編集した思い出も、日付で そのまま残せます。
編集後に追加したものは コミット日時になるので
意味があるのかと
問われると「あります!!」
バージョン管理前に編集した日付も わかることで
普通にzipなどでバックアップしていたファイルと
どちらがあたらしいか一目瞭然
方法
(1) 古い順に1個ずつコミットして、日時を更新
- 自動スクリプトで全部自動的に古い順にコミットを繰り返します
コミット数が少ない場合は、1分で終わります。
コメント欄に日時をいれれば簡単に書き換えできます
スクリプトから日付が参照できる形ならなんでもOK
(1) フォルダを全スキャンし、ファイルリストを作成します
(2) 不要なものを除外します
(3) 日付でリストをソートします
(4) リストをループさせて、gid add , commitを繰り返します
次のリストと日付が同じ場合、commitは次でするので出力しません。
日付をコメントとして登録します
(5) ファイルに書き出します
(6) 問題がないか確認します。追加する行があれば追加します
(7) 空のリポジトリを用意します
(8) スクリプトを実行し、空のリポジトリに登録します - ログを全部書き出します
git log --all - filter-branch 用の スクリプトファイルを用意します
logファイルから、設定を抽出書き出します。 - 日時書き換え自動スクリプトで日時を自動的に書き換えます
chmod +x path/to/script
git filter-branch --env-filter 'source path/to/script'
git filter-branch --env-filter '
if [ $GIT_COMMIT = "番号" ]; then
export GIT_AUTHOR_DATE="変えたい日付"
export GIT_COMMITTER_DATE="${GIT_AUTHOR_DATE}"
fi'
日付は
git log
または
php -nr " date_default_timezone_set('japan'); echo date(DateTime::RFC2822,strtotime('2015/1/1 0:0:0'));"
問題がなければ、バックアップを削除する
git show-ref | grep refs/original/refs/heads
git update-ref -d refs/original/refs/heads/master
コメントとして、日時をいれているので、移動してタイムスタンプがおかしくなった時もログからいつのかわかります。
方法 (2) dumpして書き換える
既存のリポジトリに追加する場合は、
出来上がったリポジトリを
remote add 登録してfetchします。
これで、編集した思い出も、日付で そのまま残せます。
編集後に追加したものは コミット日時になるので
意味があるのかと
問われると「あります!!」
バージョン管理前に編集した日付も わかることで
普通にzipなどでバックアップしていたファイルと
どちらがあたらしいか一目瞭然