гитиньоре без бинарных файлов - PullRequest
124 голосов
/ 19 апреля 2011

Как можно игнорировать двоичные файлы в git, используя файл .gitignore?

Пример:

$ g++ hello.c -o hello

Файл "hello" является двоичным файлом.Может ли git игнорировать этот файл?

Ответы [ 18 ]

1 голос
/ 28 июля 2015

Просто добавьте hello или /hello к вашему .gitignore.Либо работает.

1 голос
/ 25 ноября 2018

Старая тема, но все еще актуальна. Я изменил make-файл, чтобы получающийся двоичный файл после ссылки имел имя [filname]. bin вместо только [filname]. Затем я добавил * .bin файлы в gitignore.
Эта рутина выполняет мои потребности.

0 голосов
/ 05 февраля 2019

Если вы выполняете эти команды в своем файле .gitignore и файлы все еще появляются, вы можете попробовать:

git rm --cached FILENAME

После этого добавьте .gitignore, зафиксируйте и нажмитеМне понадобилось 40 минут, чтобы понять это, надеюсь, это поможет новичкам, таким как я

0 голосов
/ 04 июня 2017

Я создал файл .gitignore с двумя записями в каталоге GOPATH.

/bin
/pkg

В настоящее время игнорируются все скомпилированные разработки.

0 голосов
/ 03 октября 2018

Механизм .gitignore работает только на основе файла имен , а не на файле содержимое . Наличие двоичного файла является свойством содержимого, поэтому вы не можете попросить git игнорировать двоичные файлы напрямую, а только игнорировать их по имени (и, как предлагают другие, вы можете либо добавить все имена двоичных файлов в .gitignore, либо используйте соответствующее соглашение об именах).

Тот факт, что .gitignore работает с именами файлов, является важным свойством производительности: Git нужно только перечислять файлы, но не открывать и читать их, чтобы знать, какие файлы игнорировать. Другими словами, Git будет ужасно медленным, если вы попросите его игнорировать файлы на основе их содержимого.

0 голосов
/ 03 октября 2018

Добавьте в файл .gitignore следующее:

[^\.]*

Пояснение:

[] encloses a character class, e.g. [a-zA-Z] means "any letter".
^  means "not"
\. means a literal dot - without the backslash . means "any character"
*  means "any number of these characters"
0 голосов
/ 28 марта 2018

Опираясь на VenomVendors answer

# Ignore all
*

# Unignore all files with extensions recursively
!**/*.*

# Unignore Makefiles recursively
!**/Makefile

# other .gitignore rules...
0 голосов
/ 04 сентября 2017

.gitignore использует глобальное программирование для фильтрации файлов, по крайней мере, в Linux.

Я собираюсь выступить с докладом о кодировании на Meetup, и в процессе подготовки я создал каталог с несколькими подкаталогами, которые названы в соответствии с порядком, в котором я хочу их представить: 01_subject1, 02_subject2, 03_subject3. Каждый подкаталог содержит исходный файл с расширением, зависящим от языка, который компилируется в исполняемый файл, имя которого соответствует имени исходного файла без расширения в соответствии с обычной практикой.

Я исключаю скомпилированные файлы в каталогах с префиксом с цифрой со следующей строкой .gitignore:

[0-9][0-9]_*/[!\.]*

Согласно моему пониманию документации, это не должно работать. Задняя звездочка не должна получиться, потому что она должна соответствовать любому количеству неуказанных символов, включая «.» + расширение. Пропуск конечной звездочки должен завершиться неудачей (и не произойдет), поскольку [!\.] соответствует только одному непериодическому символу. Тем не менее, я добавил конечную звездочку, как и для регулярного выражения, и это работает. Под работой я подразумеваю, что git замечает изменения в исходном файле, но не существование или изменения в скомпилированных файлах.

...