Q: How does Git deal with binary files? 
*

*Do I have to do something to tell Git whether some files are binary (like in Subversion)? Or, can Git handle binary data automatically?

*If I change the binary file, so that I have 100 binary revisions, will git just store all 100 versions individually in the repository?

*What are submodules for with git? 


A: *

*Git can usually detect binary files automatically.

*No, Git will attempt to store delta-based changesets if it's less expensive to (not always the case).

*Submodules are used if you want to reference other Git repositories within your project.


A: git add my-binary-file
git commit
git push

Will add your binary file; it is automatic.
Indeed, if you have 100 versions of your file it will store it (but compressed).
You can use submodules to make references to other repositories.

A: I had essentially the same problem: I wanted to git pickle files, which are binary, but git thinks they're text.
I found this chapter on Git Attributes in the Pro Git Book. So I resolved my issues by creating a .gitattributes file with this line:
*.pickle binary


A: The issue is with .gitignore
The following paths are ignored by one of your .gitignore files:
XXX/YYYY/Bin1_0x1d_0x0d.bin
Use -f if you really want to add them.
git add -f XXX/YYYY/* 
OR
git add -f XXX/YYYY/Bin1_0x1d_0x0d.bin
