[英]Committing existing files to existing Git repository, while preserving timestamps
情況是這樣的:我有一堆很久以前的文件(當我沒有使用任何類型的源代碼控制時),我很想把它們放到現代 Git 存儲庫中。
我為此找到了一個工具 - file-fast-export 。 它獲取現有文件並輸出一個可以提供給git fast-import
。 到目前為止還好。
唯一的問題是快速導入對輸入格式有點挑剔,文件快速導出不是一個特別精致的程序——它假設文件被導入到新的存儲庫中。
所以我的用例是這樣的:我有一個 git 存儲庫。 我發現了一個以前丟失的子目錄。 文件修改時間在那里。 我需要在當前存儲庫歷史記錄之上提交每個文件,以便提交時間戳對應於修改時間。 據我了解,Git 不會強制提交具有按時間順序連續的時間戳,只有提交會相互跟隨。 如果我可以執行git log xxxxx.txt
並查看文件歷史git log xxxxx.txt
我會很高興。
我確信有工具可以做到這一點。 我怎樣才能做到這一點?
唯一的問題是快速導入對輸入格式有點挑剔
實際上......在 Git 2.28(2020 年第三季度)中,一些野外存儲庫的提交記錄了無意義的提交者時區(例如rails.git
); “ git fast-import
”學習了一個選項,可以完整地傳遞這些無意義的時間戳,以允許按原樣重新創建現有存儲庫。
這對您的情況可能會有所幫助。
請參閱Elijah Newren ( newren
) 的commit d42a2fb (2020 年 5 月 30 日) 。
(由Junio C gitster
合並-- gitster
-- in commit 5404183 ,2020 年 6 月 2 日)
fast-import
:添加新的--date-format=raw-permissive
格式簽字人: Elijah Newren
有多個隨機、無效時區的存儲庫。
最值得注意的是來自
rails.git
的提交, 時區為 "+051800" 。一些搜索也會找到具有相同無效時區的其他存儲庫。
此外,Peff 報告說GitHub 在 2011 年 8 月放寬了他們的
fsck
檢查以接受任何時區值,並且有多個報告filter-repo
存儲庫關於在嘗試導入現有存儲庫時fast-import
崩潰,因為它們具有時區值,例如“- [7349423]”和“-[43455309]” 。對
fast-import
時區值的現有檢查可能對手工或使用新腳本制作快速導入輸入的人有用。對他們來說,支票可以幫助他們避免意外記錄無效日期。
(請注意,此檢查相當簡單,但仍有幾種形式的無效日期無法進行快速導入檢查:將來的日期、不能被 15 整除的分鍾的時區值以及分鍾為 60 的時區值或更高。)
雖然這個簡單的檢查可能對這些用戶有一些價值,但其他用戶或工具將希望按原樣導入現有存儲庫。
提供一個--date-format=raw-permissive
格式,該格式不會在這些否則無效的時區上出錯,以便可以導入此類現有存儲庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.