跳到主要內容

Ignore files in Git without using a .gitignore file

Ignore files in Git without using a .gitignore file


在日常開發中,你可能會遇到某些檔案不希望被 Git 追蹤變更,但又不想修改專案中的 .gitignore 檔案。以下我將介紹四種在 Git 中忽略文件(但不使用 .gitignore)的常見方法,並分享每種方法的適用情境與操作方式。


1. 使用 git update-index --assume-unchanged

當你希望暫時忽略某個已經在版本控制中的檔案變更時,這個命令會非常有用。執行下列指令後,Git 會假設該檔案沒有變更,即使實際上已經做了修改。

git update-index --assume-unchanged <file>

如果未來需要取消這個忽略設定,可以執行:

git update-index --no-assume-unchanged <file>

這個方法適合用於那些偶爾需要修改但又不希望被提交到版本庫的檔案,例如配置檔案或環境變數文件。


2. 使用 git update-index --skip-worktree

另一個類似的命令是 --skip-worktree。這個選項通常用於當你需要保留檔案在版本庫中的狀態,但又不希望本地修改被 Git 追蹤。這對於那些會根據個人環境做出調整的檔案尤其適用。

git update-index --skip-worktree <file>

如果想要回復檔案變更的追蹤,則使用:

git update-index --no-skip-worktree <file>

--assume-unchanged 不同,--skip-worktree 的設計目的是忽略本地修改,特別適用於分支間共享同一份文件而本地配置有所不同的情境


3. 使用 Git Exclude (Per-Repo)

有時候你可能不想讓某些忽略規則進入版本控制,但又希望在本地專案中使用。這時候可以利用 Git 的「排除檔案」功能,把忽略規則放在 .git/info/exclude 裡面。該檔案的語法與 .gitignore 完全相同,但它只會影響當前專案,不會提交給版本庫。

步驟如下:

  1. 打開 .git/info/exclude 檔案。
  2. 添加你想要忽略的檔案或模式。

這個方法適合針對個別專案做局部設定,而不需要影響整個團隊的配置。


4. 使用 Global Git Ignore (Per-User)

如果你有一些常見的忽略規則是所有專案都會用到的(例如編譯生成的臨時檔案、作業系統自動生成的文件),你可以設定一個全域的忽略檔案。這樣,你在任何專案中都能自動忽略這些不需要的檔案。

設定方法如下:

  1. 建立全域忽略檔案(例如 ~/.gitignore_global),並在其中添加你的忽略規則。

  2. 執行以下命令來告訴 Git 使用這個全域忽略檔案:

    git config --global core.excludesfile ~/.gitignore_global
    

這樣一來,你不需要在每個專案中都配置 .gitignore,而是讓 Git 自動根據全域設定來忽略指定的檔案或模式。


小結

不同的方法適用於不同的情境:

  • --assume-unchanged 適用於偶爾忽略特定檔案變更,但又需要保留檔案在版本庫中的情況。
  • --skip-worktree 則適合當本地檔案需要根據環境調整,但又不希望這些變更被提交。
  • Git Exclude 能夠在不影響團隊的前提下,讓你針對單一專案設定忽略規則。
  • Global Git Ignore 提供了一個統一的方式來管理所有專案中共同需要忽略的檔案。

根據你的具體需求,選擇最合適的方法,可以幫助你更靈活地管理版本控制,保持專案的整潔與一致性。希望這篇分享能夠幫助你在日常工作中更加得心應手!

留言

這個網誌中的熱門文章

[解決方法] docker: permission denied

前言 當我們執行docker 指令時若出現以下錯誤訊息 docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.26/containers/create: dial unix /var/run/docker.sock: connect: permission denied. See 'docker run --help'. 表示目前的使用者身分沒有權限去存取docker engine, 因為docker的服務基本上都是以root的身分在執行的, 所以在指令前加sudo就能成功執行指令 但每次實行docker指令(就連docker ps)都還要加sudo實在有點麻煩, 正確的解法是 我們可以把目前使用者加到docker群組裡面, 當docker service 起來時, 會以這個群組的成員來初始化相關服務 sudo groupadd docker sudo usermod -aG docker $USER 需要退出重新登錄後才會生效 Workaround 因為問題是出在權限不足, 如果以上方法都不管用的話, 可以手動修改權限來解決這個問題 sudo chmod 777 /var/run/docker.sock https://docs.docker.com/install/linux/linux-postinstall/

[C#] Visual Studio, 如何在10分鐘內快速更改命名專案名稱

前言: 由於工作需要, 而且懶得再重寫類似的專案, 所以常常將之前寫的專案複製一份加料後, 再重新命名編譯 假設今天我有一個專案HolyUWP, 我想把它重新命名成 BestUWP 時該怎麼做? 以下是幾個簡單的的步驟 使用Visual Studio 2017 備份原來專案 更改Solution名稱 更改Assembly name, Default namespce 更改每支程式碼的Namespace 更改專案資料夾名稱 備份原來專案 由於怕改壞掉, 所以在改之前先備份 更改Solution名稱 更改sln的名稱, 這邊我改成BestUWP.sln 使用Visual Studio打開你的.sln, 右鍵點擊Solution後選擇Rename, 這邊我把它重新命名成BestUWP(跟檔案名稱一致) 必要的話可以順便修改Porject名稱 更改Assembly name, Default namespce 進入 Project > OOXX Properties    修改Assembly Name, Default namesapce 更改每支程式碼的Namespace 基本上隨便挑一支有用到預設Namesapce(HolyUWP)的程式碼來改就好了 重新命名後點擊Apply,  這個動作做完後所有用到舊Namespace的程式碼都會被改成新的 更改專案資料夾名稱 以上動作做完後, 基本上就可以把專案編譯出來測看看了~

[Visual Studio Code] 如何切換背景主題

在我們安裝完畢後,背景主題預設會是黑色 那如果不喜歡黑色 我們可以直接到 File > Preferences > Color Theme下做更換 點開Color Theme 後會發現,Visual Studio Code 內建了許多主題讓我們選擇 現在的Visual Studio Code提供Syntax HighLight的功能,方便我們複製貼上程式碼時能保有顏色 由於我希望複製貼上後的程式碼背景可以是白色的 所以我選擇了 Light(Visual Studio) 這個主題,結果如下