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