Git Objects
-
Git object are stored in compressed binary format and cannot be read directly (E.g., cat command)
-
Git object hash generation
- The git object is the
object type+empty space+object length+delimiter+content - The hash is generated based on the input fo the whole object

Objects types
- Blob
- Stores any file of any type
- Store the raw content but no filename or structure
- Tree
- Information about files
- Create pointers to other objects
- Commit
- Info about author, name, email, description and parent
- Allow storing different versions of the project
- It has a pointer to a specific tree in the database. It's a
wrapperaround tree object - Moving to different commits is the same as
checking out - To create a new commit, there must be change in the staging area
- Annotated Tag
- Text pointer to a specific commit
Object permissions
040000: Directory100644: Regular non-executable file100664: Regular non-excutable group-writeable file100755: Regular executable file120000: Symbolic link160000: Gitlink