On 23/11/10 20:18, "Konstantin Khomoutov" <khomou...@gmail.com> wrote:

> On Nov 23, 10:33 pm, Roddie Grant <gitl...@myword.co.uk> wrote:
>> Could someone kindly explain the following or point me to an explanation. It
>> is typical of the output from a push. I committed and pushed one file, so
>> why 9 objects counted, and 5 compressed and delta 3?
>> Counting objects: 9, done.
>> Compressing objects: 100% (5/5), done.
>> Writing objects: 100% (5/5), 638 bytes, done.
>> Total 5 (delta 3), reused 0 (delta 0)
>> To ssh://path/to/repo
>>    c1c4655..02cbed4  general -> dev/general
>> When I went to remote repo and merged, it confirmed:
>> 1 files changed, 19 insertions(+), 8 deletions(-)
> I never bothered to learn what these numbers precisely mean (because
> this is utterly low-level info), but the general idea is that the
> "object" has a broad sense, and it includes anything which Git stores
> in its database (and which SHA-1 hash it knows).
> Thus, even if you do one commit changing one file, the database will
> store at least three new objects:
> 1) The commit object, recording your commit message, other commit
> metadata and pointing to the parent commit object(s), and the tree
> object this commit refers to.
> 2) The file blob representing the contents of the changed file.
> 3) The tree object mentioned at step (1); it represents the state of
> the tree associated with a commit by referencing participating files
> and directories using their SHA-1 hashes. The new tree object for our
> imaginary commit is required because the new contents of the changed
> file hashes to a different SHA-1 hash.
> Pushing a branch to a remote repository pushes the commit object
> located at the tip of that branch, and pushing it recursively pushes
> all the objects referenced by that commit object and which the remote
> side does not yet have.
> To make things simpler to grok, you can think of all those three types
> of objects as being plain text files.
> Playing with `git ls-tree` and `git cat-file` can give a very clear
> idea about how objects reference one another.

Thanks Konstantin, that's very helpful. I'm still trying to conceptualise
how Git works, and your reply has filled in a few gaps.



You received this message because you are subscribed to the Google Groups "Git 
for human beings" group.
To post to this group, send email to git-us...@googlegroups.com.
To unsubscribe from this group, send email to 
For more options, visit this group at 

Reply via email to