5

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

4

2 回答 2

5

我建议不要这样做。如果您需要在构建过程或运行时使用脚本,但由于它具有可执行位而意外 gitignored,会发生什么情况?如果其他人在不知道 gitignore 的情况下为您的项目做出贡献,这尤其会造成混乱。您最好手动添加文件(或使用 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.

于 2013-11-03T19:00:37.517 回答
0

不是直接的,但您可以使用它find来查找具有执行权限的程序:

find . -type f -perm +0111 -print

根据需要运行以创建新.gitignore条目。(请注意,使用时要小心;它会找到可执行的 shell 脚本,即源文件以及可执行的二进制文件。)

于 2013-11-03T18:45:42.320 回答