我正在开发一个生成大量二进制文件的 C 项目。我尝试将源代码置于源代码控制之下。但是,我希望忽略二进制文件,而不必在创建新文件时将它们添加到 gitignore 文件中。这是一个沙箱,所以我在尝试新事物时创建了许多新的二进制文件。我可以在一个目录中构建我所有的二进制文件或给它们一个后缀,但我不喜欢这些原因。由于 GCC 会自动在它生成的二进制文件上设置可执行位,我可以使用该标志来忽略它们吗?
最佳答案
我不建议这样做。如果您需要在构建过程中或运行时使用脚本,但由于它具有可执行位而意外被 gitignored,会发生什么情况?如果其他人在不知道 gitignore 的情况下为您的项目做出贡献,这尤其会造成混淆。您最好手动添加文件(或使用 bin 目录)来解决此问题。
也就是说,gitignore 似乎不支持基于模式的文件忽略,但您可以自动执行手动添加可执行文件的过程。
如果您的.gitignore
文件可以被覆盖:
运行此更新您忽略的文件:find -type f -executable | sed 's#^.##' > .gitignore
如果您的 .gitignore
文件应该保持完整:
- 设置一个新的忽略文件(你现有的
.gitignore
应该仍然有效):git config core.excludesfile .auto_gitignore
- 运行此命令以创建/更新您忽略的文件列表:
find -type f -executable | sed 's#^.##' > .auto_gitignore
- 提交你的
.auto_gitignore
如果你想与其他人分享,或者添加.auto_gitignore
到.git/info/exclude
如果你不。请注意,如果您确实要共享它,您的合作者也必须单独执行第 1 步。
注意:如果因为您的 find 版本不支持 -executable
而出现错误,请将其替换为 -perm/111
.
关于基于unix文件权限的gitignore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19756445/