仅忽略文件存根的一部分

有时你可能希望在不想提交或发布的文件中进行本地更改。理想情况下,本地设置应该集中在可以放入 .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 上测试过