# how the commit ID come from in GIT?

3 messages from 2012-11-05 to 2012-11-05. Participants: hong zhang, Magnus Bäck, Konstantin Khomoutov.
Thread: https://gitlist.dev/t/32022

## hong zhang, 2012-11-05 20:04

Subject: how the commit ID come from in GIT?
Message-ID: <1352145846.26267.YahooMailClassic@web141404.mail.bf1.yahoo.com>
URL: https://gitlist.dev/e/1352145846.26267.YahooMailClassic%40web141404.mail.bf1.yahoo.com

```
List,

Could anyone explain how the git commit ID will include all the files that devloper makes changes on?

How git commit ID works?

Thanks for any help!

---henry

```

## Magnus Bäck, 2012-11-05 20:26

Subject: Re: how the commit ID come from in GIT?
Message-ID: <20121105202621.GA31625@google.com>
URL: https://gitlist.dev/e/20121105202621.GA31625%40google.com
In-Reply-To: <1352145846.26267.YahooMailClassic@web141404.mail.bf1.yahoo.com>

```
On Monday, November 05, 2012 at 15:04 EST,
     hong zhang <henryzhang62@yahoo.com> wrote:

> Could anyone explain how the git commit ID will include all the files
> that devloper makes changes on?
>
> How git commit ID works?

In short, a Git commit points to a tree object that describes the full
state of the source tree plus metadata like the commit author, date,
description, and a pointer to the commit object(s) that preceded the
commit. The commit id itself is the SHA-1 of the contents of the commit
object. Any change of the source tree will affect the top-level tree
object's SHA-1 which in turn affects the SHA-1 of the commit. Also,
because a commit contains the timestamp of the commit object's creation
even two commits that are content-wise identical will have different
SHA-1s.

If you haven't read it, the Pro Git books explains Git's object model in
detail: http://git-scm.com/book/en/Git-Internals-Git-Objects

That description is quite detailed, and most users don't need to go that
deep.

-- 
Magnus Bäck
baeck@google.com

```

## Konstantin Khomoutov, 2012-11-05 23:04

Subject: Re: how the commit ID come from in GIT?
Message-ID: <20121105230430.GK5210@localhost.localdomain>
URL: https://gitlist.dev/e/20121105230430.GK5210%40localhost.localdomain
In-Reply-To: <1352145846.26267.YahooMailClassic@web141404.mail.bf1.yahoo.com>

```
On Mon, Nov 05, 2012 at 12:04:06PM -0800, hong zhang wrote:

> Could anyone explain how the git commit ID will include all the files
> that devloper makes changes on?
> 
> How git commit ID works?

To expand on the answer provided by Magnus, I would also suggest reading
the classic "Git from the bottom up" document [1], and if you want a
totally informal and fun introduction to how these cryptographic hashes
come about and why they are useful, I suggest reading
"The Git Parable" [2].

1. http://newartisans.com/2008/04/git-from-the-bottom-up/
2. http://tom.preston-werner.com/2009/05/19/the-git-parable.html

```
