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

你如何添加linux可执行文件到.gitignore而不给它们一个明确的扩展名,也不要把它们放在特定的/ bin目录中? 大多数的命名与C编译时没有“.c”扩展名。

你可以忽略所有,但源代码文件?

例如:

* !*.c !Makefile 

我会明确地把它们放在项目.gitignore中。 这不是优雅的,但我想你的项目没有那么多。

大多数开发人员通常在其实际构build过程正在运行的项目中有一个build目录。 所以,所有的可执行文件, .o.so.a等都在这里,这个构build目录被添加到.gitignore

从当前目录中的所有可执行文件中一次性生成与.gitignore差异的一种方法:

 find . -perm /111 -type f | sed 's#^./##' | sort | diff -u .gitignore - 

这会生成diff,这意味着您不会对该文件进行任何手动更改。 这假定您的.gitignore文件已经sorting。 sed部分只是剥去了领先的./find生成。

没有自动的方法来只忽略可执行文件,所以你总是要pipe理文件。

我写了一个脚本来自动添加ELF可执行文件到.gitignore

git-ignore-elf

 #!/bin/sh set -eu cd "$(git rev-parse --show-toplevel)" file=.gitignore new=$file.new.$$ ( if [ -e "$file" ]; then cat "$file" fi find . -name .git -prune -o -type f ! -name '*.o' ! -name '*.so' \ -print0 | xargs -0 file | grep ': *ELF ' | sed 's/:.*//' | sed 's,^./,,' ) | perl -ne 'print if !$already{$_}++' >"$new" mv "$new" "$file" 

特征:

  • 从顶层文件夹开始查找(可能是错误的!)
  • 忽略ELF文件,不包括使用通用规则可以忽略的.o和.so文件
  • 保留.gitignore中的现有条目而不复制它们

这个单脚本版本在这里: http : //sam.nipl.net/b/git-ignore-elf-1

这是一个更加模块化的版本,它依赖于来自同一地点的其他脚本(git-root,find-elf,uniqo): http ://sam.nipl.net/b/git-ignore-elf