Как добавить исполняемые файлы Linux в .gitignore? - PullRequest
52 голосов
/ 23 ноября 2011

Как добавить исполняемые файлы linux в .gitignore, не давая им явного расширения и не помещая их в определенный каталог или / bin?Большинство из них названы так же, как и файл C, из которого они были скомпилированы, без расширения «.c».

Ответы [ 5 ]

36 голосов
/ 08 января 2013

Можете ли вы игнорировать все, кроме файлов исходного кода?

Например:

*
!*.c
!Makefile
13 голосов
/ 23 ноября 2011

Я бы явно поместил их в проект .gitignore.Это не элегантно, но я думаю, что в вашем проекте нет , которых , многие из них.

6 голосов
/ 19 октября 2016

У большинства разработчиков обычно есть каталог build в их проекте, где выполняется сам процесс сборки. Итак, все исполняемые файлы, .o, .so, .a и т. Д., Есть, и этот каталог сборки добавляется в .gitignore.

5 голосов
/ 01 февраля 2015

Я написал скрипт для автоматического добавления исполняемых файлов 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

3 голосов
/ 23 ноября 2011

Способ создания различий с вашим .gitignore за один раз из всех исполняемых файлов из текущего каталога:

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

генерирует diff, что означает, что вы не потеряете ручные изменения в файле. Предполагается, что ваш .gitignore файл уже отсортирован. Часть sed просто удаляет ведущий ./, который находит генератор.

Не существует автоматического способа игнорировать только исполняемые файлы, поэтому вам всегда придется вручную управлять файлом.

...