日記帳
本ページはプロモーションが含まれています
カテゴリー
Links
blog(ブログ)マスター
アンドロイドの巣
ゼロから始めるベランダ菜園
タイトル
2024年11月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

git ファイルタイムスタンプ通りにコミットする方法

2015-11-25
git ファイルタイムスタンプ通りにコミットする方法

方法
(1) 古い順に1個ずつコミットして、日時を更新
  1. 自動スクリプトで全部自動的に古い順にコミットを繰り返します
    コミット数が少ない場合は、1分で終わります。
    コメント欄に日時をいれれば簡単に書き換えできます
    スクリプトから日付が参照できる形ならなんでもOK
    (1) フォルダを全スキャンし、ファイルリストを作成します
    (2) 不要なものを除外します
    (3) 日付でリストをソートします
    (4) リストをループさせて、gid add , commitを繰り返します
         次のリストと日付が同じ場合、commitは次でするので出力しません。
         日付をコメントとして登録します
    (5) ファイルに書き出します
    (6) 問題がないか確認します。追加する行があれば追加します
    (7) 空のリポジトリを用意します
    (8) スクリプトを実行し、空のリポジトリに登録します
  2. ログを全部書き出します
    git log --all
  3. filter-branch 用の スクリプトファイルを用意します
    logファイルから、設定を抽出書き出します。
  4. 日時書き換え自動スクリプトで日時を自動的に書き換えます
    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などでバックアップしていたファイルと
どちらがあたらしいか一目瞭然



PR

[PR]