對於給定的項目(目前我只在其中工作),我想對某些文件應用某種自動轉換。對於這個討論,讓我們假設我想在所有文本文件中將行結尾從Windows風格改變爲Unix風格。我希望新格式在過去的某些修訂中能夠有效,並貫穿歷史。從過去的修訂開始應用自動化文件轉換(轉換),保留歷史
我最常做的是:我開始一個互動的底墊和附加以下後,每次提交開始與所需的起點:
exec <transformation rule>
exec git commit -m "transform" && git revert --no-edit HEAD
這導致transform
接着原來提交的序列,每個環繞着revert
和transform
,然後是最後的revert
。然後我執行第二次互動式底膠,並擠壓所有三聯體revert
- <original commit>
- transform
,並刪除最後的revert
。第一個transform
保持不變,其他所有transform
和revert
提交都消失。這個手動過程產生(幾乎)所需的結果(我不確定新提交的提交日期),但是我想知道可以使用filter-branch
,fast-import
或可能是一個自定義工具來自動執行此操作我在粗略搜索中錯過了。
你在暗示哪個特定的「 - 過濾器」? – krlmlr
更新了答案 – user3159253
只是有機會測試'filter-branch'。它岩石。謝謝你指出我看起來很明顯。 – krlmlr