2024-05-30|閱讀時間 ‧ 約 23 分鐘

如何用 git update-index 避免更改檔案

問題

最近筆者在進行一個 Electron 專案,由於專案最後是在電腦本機運行,且資料不需要上雲,故後端夥伴選擇將 SQLite 資料庫跟專案檔打包成一個執行檔。在開發過程中,前端的操作經常會更動到 db的資料,此時 Git 就會追蹤到 db 的變化,因此前端在推送檔案到遠端 repo 前,會需要把 db 移出 Git 的追蹤範圍。





.gitignore 不行嗎

筆者最初的想法,是將 SQLite 檔案加入專案的 .gitignore 檔案中,但似乎因為 db 檔的特性,必須把開啟中的 Electron 關閉後才能把 db 從 Git 的追蹤中移除。雖然每次 commit 前只多一個關閉專案的動作,多次進行下來卻還是有點麻煩。


git udpate-index

後來得知 git update-index 可以針對個別檔案的追蹤進行細微調整,而其中 --assume-unchanged 這個參數便可以將某個檔案移出 Git 的追蹤範圍!

Git 官方文件


那要 merge 的時候怎麼辦

此時你可能會想,若後端更新 db 時,我的分支沒辦法同步更新怎麼辦? Git 會在進行分支的 merge 時出現錯誤,此時可以再執行一次 git update-index,帶入--no-assume-unchanged參數,便可以在 merge 其他分支時拿到最新檔案了!


分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.