On 23/11/10 20:18, "Konstantin Khomoutov" <[email protected]> wrote:
> On Nov 23, 10:33 pm, Roddie Grant <[email protected]> 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. Regards Roddie -- 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/git-users?hl=en.
