我正在开发一个生成大量二进制文件的C项目。我尝试将源保持在源代码管理之下。但是,我希望忽略二进制文件,而不必在创建新文件时将它们添加到gitignore文件中。这是一个各种沙箱,因此我在尝试新事物时创建了许多新的二进制文件。我可以在一个目录中构建我的所有二进制文件或给它们一个后缀,但我不喜欢这些原因。由于GCC自动在它生成的二进制文件上设置可执行位,我可以使用该标志来忽略它们吗?
答案 0 :(得分: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步。 注意:如果由于您的查找版本不支持-executable
而收到错误,请将其替换为-perm /111
。
答案 1 :(得分:0)
不直接,但您可以使用find
查找具有执行权限的程序:
find . -type f -perm +0111 -print
根据需要运行以创建新的.gitignore
条目。 (请注意,这将谨慎使用;它将找到可执行的shell脚本,它们是源文件,以及可执行的二进制文件。)