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

haz*_*ziz 58 c c++ linux git gitignore

如何将linux可执行文件添加到.gitignore而不给它们显式扩展而不将它们放在特定的/ bin目录中?大多数命名与编译它们的C文件相同,没有".c"扩展名.

Hav*_*vok 38

你能忽略所有但源代码文件吗?

例如:

*
!*.c
!Makefile
Run Code Online (Sandbox Code Playgroud)

  • 这就把婴儿和洗澡水一起倒掉了。git 关于未跟踪文件的警告的要点是,您不会意外地忘记“git add”新文件。通过将“.c”文件和“Makefile”列入白名单,现在很容易忘记“.h”文件、“README”和其他可能重要的文件。我会让“.gitignore”文件更加保守,并且只添加您确定应该忽略的内容。 (2认同)

Ben*_*Ben 13

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

  • 我偶然发现这个问题的原因正是因为它有很多这样的问题. (14认同)

Zax*_*ter 6

大多数开发人员通常build在他们的项目中有一个目录,其中运行实际的构建过程.因此,所有的可执行文件,.o,.so,.a,等在那里,这个build目录加入到.gitignore.


Sam*_*ins 5

我编写了一个脚本,以将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"
Run Code Online (Sandbox Code Playgroud)

特征:

  • 从顶层文件夹开始查找(可能功能不正确!)
  • 忽略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

  • 使用 python 和 file(1) 有一个类似的答案,在这里:http://stackoverflow.com/a/19749478/218294 (2认同)