gitignore binary files that have no extension
How can binary files be ignored in git
using the .gitignore
file?
Example:
$ g++ hello.c -o hello
The "hello" file is a binary file. Can git
ignore this file ?
# Ignore all
*
# Unignore all with extensions
!*.*
# Unignore all dirs
!*/
### Above combination will ignore all files without extension ###
# Ignore files with extension `.class` & `.sm`
*.class
*.sm
# Ignore `bin` dir
bin/
# or
*/bin/*
# Unignore all `.jar` in `bin` dir
!*/bin/*.jar
# Ignore all `library.jar` in `bin` dir
*/bin/library.jar
# Ignore a file with extension
relative/path/to/dir/filename.extension
# Ignore a file without extension
relative/path/to/dir/anotherfile
Add something like
*.o
in the .gitignore file and place it at the root of your repo ( or you can place in any sub directory you want - it will apply from that level on ) and check it in.
Edit:
For binaries with no extension, you are better off placing them in bin/
or some other folder. Afterall there is no ignore based on content-type.
You can try
*
!*.*
but that is not foolproof.
To append all executables to your .gitignore
(which you probably mean by "binary file" judging from your question), you can use
find . -executable -type f >>.gitignore
If you don't care about ordering of lines in your .gitignore
, you could also update your .gitignore
with the following command which also removes duplicates and keeps alphabetic ordering intact.
T=$(mktemp); (cat .gitignore; find . -executable -type f | sed -e 's%^\./%%') | sort | uniq >$T; mv $T .gitignore
Note, that you cannot pipe output directly to .gitignore
, because that would truncate the file before cat
opens it for reading. Also, you might want to add \! -regex '.*/.*/.*'
as an option to find if you do not want to include executable files in subdirectories.