執行 git clone
以後取得的修改時間是當下執行的時間,所以其實是沒辦法去判斷哪個檔案是七天前修改的,或是十天前修改的。
Stackoverflow 上有人問了相同的問題:Git clone changes file modification time – Stack Overflow
有人就回答了,其實 git 裡面沒有保留檔案修改時間的資訊,但可以有個 tricky 的方法,就是透過 git log
的資訊來變更檔案的修改日期:
git ls-tree -r --name-only HEAD | while read filename; do
unixtime=$(git log -1 --format="%at" -- "${filename}")
touchtime=$(date -d @$unixtime +'%Y%m%d%H%M.%S')
touch -t ${touchtime} "${filename}"
done
這邊主要用到幾個指令,說明如下
git ls-tree
是取出檔案名稱git log -1 --format
是取出檔案提交的日期,這邊取出的是 timestamp 值date -d
將 timestamp 值,轉換為日期時間格式。touch -t
依據指定的日期格式去設定檔案的修改日期。
這邊要注意,目錄的修改時間不會被更動到。
透過以上的腳本,就可以還原git簽出檔案的修改時間,然後再搭配 find 指令來找出七天前修改的檔案了。
沒有留言:
張貼留言