如何将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