Как вы добавляете исполняемые файлы linux в .gitignore, не предоставляя им явное расширение и не помещая их в определенный каталог или /bin? Большинство из них названы так же, как файл C, из которого они были скомпилированы без расширения .c.
Как добавить исполняемые файлы Linux в .gitignore?
Ответ 1
Можете ли вы игнорировать все, но файлы исходного кода?
Например:
*
!*.c
!Makefile
Ответ 2
Я бы прямо поставил их в проект .gitignore. Это не изящно, но я думаю, что у вашего проекта не так много из них.
Ответ 3
Большинство разработчиков обычно имеют каталог build
в своем проекте, где выполняется фактический процесс сборки.
Таким образом, все исполняемые файлы .o
, .so
, .a
и т.д. Есть, и этот каталог сборки добавляется в .gitignore
.
Ответ 4
Способ создания отличий от вашего .gitignore
за один раз из всех исполняемых файлов из текущего каталога:
find . -perm /111 -type f | sed 's#^./##' | sort | diff -u .gitignore -
это генерирует diff, означающий, что вы не потеряете никаких ручных изменений в файле. Это предполагает, что ваш файл .gitignore
уже отсортирован. Часть sed просто разбивает ведущий ./
, который находит.
Нет автоматического способа игнорировать только исполняемые файлы, поэтому вам всегда нужно управлять файлом.
Ответ 5
Я написал script для автоматического добавления исполняемых файлов 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, не дублируя их
Эта версия для одного < script находится здесь: http://sam.nipl.net/b/git-ignore-elf-1
Вот более модульная версия, которая зависит от других скриптов (git -root, find-elf, uniqo) с одного и того же места: http://sam.nipl.net/b/git-ignore-elf