最近筆者在進行一個 Electron 專案,由於專案最後是在電腦本機運行,且資料不需要上雲,故後端夥伴選擇將 SQLite 資料庫跟專案檔打包成一個執行檔。在開發過程中,前端的操作經常會更動到 db的資料,此時 Git 就會追蹤到 db 的變化,因此前端在推送檔案到遠端 repo 前,會需要把 db 移出 Git 的追蹤範圍。
筆者最初的想法,是將 SQLite 檔案加入專案的 .gitignore 檔案中,但似乎因為 db 檔的特性,必須把開啟中的 Electron 關閉後才能把 db 從 Git 的追蹤中移除。雖然每次 commit 前只多一個關閉專案的動作,多次進行下來卻還是有點麻煩。
後來得知 git update-index 可以針對個別檔案的追蹤進行細微調整,而其中 --assume-unchanged
這個參數便可以將某個檔案移出 Git 的追蹤範圍!
此時你可能會想,若後端更新 db 時,我的分支沒辦法同步更新怎麼辦? Git 會在進行分支的 merge 時出現錯誤,此時可以再執行一次 git update-index,帶入--no-assume-unchanged
參數,便可以在 merge 其他分支時拿到最新檔案了!