typescript - 改善重命名和更改檔案時的 git 差異
我正在將相當多的程式碼從 JavaScript 轉換為 TypeScript,這意味著:
- 將檔案從 .js 重新命名為 .ts
- 添加類型註解等
當然,在很多情況下,這樣的重構可能是相當大規模的,你可能會完全重寫程式碼以利用 TypeScript(或者只是因為它太舊)。但我經常發現自己會從上述簡單的步驟開始。由於我對程式碼審查有點執著,以避免在遷移程式碼時出現打字錯誤和愚蠢的錯誤,我更喜歡在 GitHub PR 中徹底審查我的程式碼。然而,當一個檔案被重新命名並且稍作修改時,GitHub 往往會直接放棄,並將其顯示為一個刪除的檔案和一個新增的檔案。這意味著一個 500 行的檔案將不得不在沒有任何上下文的情況下進行審查,這完全沒有用!
我找到了一個變通方法,那就是
- 對我打算遷移的所有文件作一次提交,只重命名文件而不做其他操作(當然此時程式碼會壞掉)
- 進行第二次提交,包含所有的 TS 調整
我審查了這個 PR 並排除了第一個提交,這意味著我將審查的是相當小的變更(require -> import、函數和變數的類型註解等)。文件的大部分內容保持不變。
然而,這很痛苦,因為很多時候你開始一個遷移任務時,是一次遷移一些檔案,而你一開始並不知道在這個 PR 完成時會遷移哪些具體檔案。所以有時當我完成時,我已經創建了一個新分支,手動將遷移的檔案重新命名為 .ts,提交了這個更改,然後使用 git checkout migration-branch -- src 從工作分支複製代碼更改,並進行第二次提交。
這只是一個令人沮喪的工作流程。有沒有方法可以向 git 或 GitHub 提示一個文件被重命名並修改過,讓它不會認為 JS 文件被刪除了,而是一個完全無關的 TS 文件被添加了?或者有其他技巧嗎?