gitignore基于unix文件权限

aza*_*ani 5 git gitignore

我正在研究一个生成大量二进制文件的C项目.我尝试将源保持在源代码管理之下.但是,我希望忽略二进制文件,而不必在创建新文件时将它们添加到gitignore文件中.这是一个各种沙箱,因此我在尝试新事物时创建了许多新的二进制文件.我可以在一个目录中构建我的所有二进制文件或给它们一个后缀,但我不喜欢这些原因.由于GCC自动在它生成的二进制文件上设置可执行位,我可以使用该标志来忽略它们吗?

Nic*_*rdy 5

我建议不要这样做.如果您需要在构建过程中或在运行时使用脚本会发生什么,但由于它具有可执行位,因此会意外地进行gitignored?如果其他人在不知道giti​​gnore的情况下为您的项目做出贡献,这可能会造成混乱.您最好手动添加文件(或使用bin目录)来解决此问题.

话虽这么说,gitignore似乎不支持基于模式的文件忽略,但您可以自动执行手动添加可执行文件的过程.

如果您的.gitignore文件可以被覆盖:

运行此命令以更新被忽略的文件: find -type f -executable | sed 's#^.##' > .gitignore

如果您的.gitignore文件应保持完整:

  1. 设置一个新的忽略文件(您的现有.gitignore应该仍然有效):git config core.excludesfile .auto_gitignore
  2. 运行此命令以创建/更新您忽略的文件列表: find -type f -executable | sed 's#^.##' > .auto_gitignore
  3. 提交你的.auto_gitignore,如果你想与他人分享,或添加.auto_gitignore.git/info/exclude,如果你不这样做.请注意,如果您共享它,您的协作者也必须单独执行第1步.

注意:如果由于您的find版本不支持而出现错误-executable,请将其替换为-perm /111.