Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are the "loose objects" that the Git GUI refers to?

Tags:

git

People also ask

What does git GUI do?

git gui focuses on allowing users to make changes to their repository by making new commits, amending existing ones, creating branches, performing local merges, and fetching/pushing to remote repositories. Unlike gitk, git gui focuses on commit generation and single file annotation and does not show project history.

What is rescan in git GUI?

Clicking the Rescan button in the git gui will cause it to search out new, modified, and deleted files in the directory.


An object (blobs, trees, and commits) with SHA say - 810cae53e0f622d6804f063c04a83dbc3a11b7ca will be stored at

.git/objects/81/0cae53e0f622d6804f063c04a83dbc3a11b7ca

( the split in first two characters to improve performance of the File system as now not all the objects are stored in the same directory)

Objects stored as above are referred to as Loose objects.

When you start up with your repo, you mostly have loose objects. As the number goes high, it becomes inefficient and they are stored in a pack file. Such objects are called packed objects.

 git gc

is what you run to pack objects (Usually loose objects that are not needed and few weeks old are also removed and with --prune=<date> option you can force remove loose objects that are no longer needed. Like when you amend a commit. The old commit object is no longer needed. )


The Git Book explains it pretty well: https://git-scm.com/book/en/v2/Git-Internals-Packfiles

Loose objects are the simpler format. It is simply the compressed data stored in a single file on disk. Every object written to a seperate file.