基于unix文件权限的gitignore

标签 git gitignore

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

最佳答案

我不建议这样做。如果您需要在构建过程中或运行时使用脚本,但由于它具有可执行位而意外被 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 .

关于基于unix文件权限的gitignore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19756445/

相关文章:

gitignore 忽略中间有空格的文件夹中的文件

ios - 在 github 中创建新分支但它不是最新的?

windows - 奇怪的 git 错误

git - Jitterbit 项目 + Git + 持续集成

git - 修改 git merge 和 rebase

git - 如何创建/添加到 .git/info/exclude 文件以忽略本地文件?

git - 如何从 Git/Github 图表中删除旧提交?

c++ - 如何将 Linux 可执行文件添加到 .gitignore?

git - 无法取消暂存 git 提交的文件

git - 使用当前的 .gitignore 使 Git 重建历史