我正在开发一个生成大量二进制文件的 C 项目。我尝试将源代码置于源代码控制之下。但是,我希望忽略二进制文件,而不必在创建新文件时将它们添加到 gitignore 文件中。这是一个沙盒,所以我在尝试新事物时创建了许多新的二进制文件。我可以在一个目录中构建我所有的二进制文件或给它们一个后缀,但我不喜欢这些原因。由于 GCC 会自动在它生成的二进制文件上设置可执行位,我可以使用该标志来忽略它们吗?
问问题
1134 次
2 回答
5
我建议不要这样做。如果您需要在构建过程或运行时使用脚本,但由于它具有可执行位而意外 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
.
于 2013-11-03T19:00:37.517 回答
0
不是直接的,但您可以使用它find
来查找具有执行权限的程序:
find . -type f -perm +0111 -print
根据需要运行以创建新.gitignore
条目。(请注意,使用时要小心;它会找到可执行的 shell 脚本,即源文件以及可执行的二进制文件。)
于 2013-11-03T18:45:42.320 回答