僅忽略檔案存根的一部分

有時你可能希望在不想提交或釋出的檔案中進行本地更改。理想情況下,本地設定應該集中在可以放入 .gitignore 的單獨檔案中,但有時作為短期解決方案,在簽入檔案中包含本地內容會很有幫助。

你可以使用乾淨的過濾器讓 Git看不見這些行。他們甚至不會出現差異。

假設這裡是檔案 file1.c 的片段:

struct settings s;
s.host = "localhost";
s.port = 5653;
s.auth = 1;
s.port = 15653; // NOCOMMIT
s.debug = 1; // NOCOMMIT
s.auth = 0; // NOCOMMIT

你不希望在任何地方釋出 NOCOMMIT 行。

通過將此新增到像 .git/config 這樣的 Git 配置檔案來建立 nocommit 過濾器:

[filter "nocommit"]
    clean=grep -v NOCOMMIT

將此新增(或建立)到 .git/info/attributes.gitmodules

file1.c filter=nocommit

你的 NOCOMMIT 行是從 Git 中隱藏的。

注意事項:

  • 使用乾淨的過濾器會減慢檔案的處理速度,尤其是在 Windows 上。
  • 當 Git 更新它時,被忽略的行可能會從檔案中消失。它可以用塗抹過濾器來抵消,但它更棘手。
  • 未在 Windows 上測試過