git 暫時忽略個別文件的更改

最近開始參與到 SDK 的開發工作中,因為上層 Demo 與 SDK 是在同一個 Visual Studio 的解決方案中(.sln),但是項目的目錄卻不在同一個目錄下的,同事直接把 SDK 的路徑設置為 Demo 的相對路徑 ……SDK 目錄下了。如下圖:

而我的項目 Demo 項目目錄是在自己管理的一個統一的存放項目的目錄下的,如果按他這個格式需要把 SDK 存放到統一的項目目錄的上一層才可以,否則我就要修改 Visual Studio 的解決方案配置,將目錄指定到我自己的 SDK 目錄下。但這樣把代碼上傳以後到他那邊他又因為路徑無法正常加載項目了,所以糾結了很久。終於讓我找到一個辦法就是臨時修改這個文件,只在本地暫存,而且提交的時候不會提示該文件被更新了。神奇的 git 就是這麼人性化,使用如下命令設置你需要臨時忽略的文件。

git update-index --assume-unchanged project.sln

而當你需要真的修改這個文件的時候,把他從臨時忽略列表再拉出來就好了,使用如下命令:

git update-index --no-assume-unchanged project.sln

這樣就完美的解決了我們兩個之間衝突的問題,當你這樣臨時忽略一個文件後,在 Windows 下 TortoiseGit 客戶端會顯示一個灰色的圖標以代表這個文件被臨時忽略了,與徹底忽略的灰白色圖標是有差別的: