threads / discuss / 11427

Why 'git commit --amend' generates different HEAD sha1 each time when no content changes

Subject: Why 'git commit --amend' generates different HEAD sha1 each time when no content changes

## tl;dr

3 messages between Dec 30, 2007 and Dec 30, 2007.

replies: 2people: 1as markdown or json

Ping Yin· Dec 30, 2007, 10:56 UTC · lore

AFAIK, commit sha1 is only determined by commit object content (say parent commit, tree sha1 and so on). So why 'git commit --amend' changes the commit sha1 when no content changes as following shows.

$ mkdir A && cd A && echo foo >foo
$ git init && git add foo && git commit -m 'add file foo'
Created initial commit 8626800: add file foo
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 foo
$ git commit --amend
Created commit 3591035: add file foo
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 foo
$ git commit --amend
Created commit 3927d9a: add file foo
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 foo
-- 
Ping Yin
Ping Yin· Dec 30, 2007, 11:19 UTC · lore

Re: Why 'git commit --amend' generates different HEAD sha1 each time when no content changes

On Dec 30, 2007 6:59 PM, Matthias Kestenholz <mk@spinlock.ch> wrote:
Show 11 quoted lines
>
> On Sun, 2007-12-30 at 18:56 +0800, Ping Yin wrote:
> > AFAIK, commit sha1 is only determined by commit object content (say
> > parent commit, tree sha1 and so on). So why 'git commit --amend'
> > changes the commit sha1 when no content changes as following shows.
> >
>
> The full commit includes a timestamp too, which changed. Try setting the
> GIT_AUTHOR_DATE and GIT_COMMITTER_DATE environment variables, you should
> get the same SHA-1 everytime.
>
-- 
Ping Yin
Ping Yin· Dec 30, 2007, 11:20 UTC · lore

Re: Why 'git commit --amend' generates different HEAD sha1 each time when no content changes

On Dec 30, 2007 6:59 PM, Matthias Kestenholz <mk@spinlock.ch> wrote:
Show 10 quoted lines
>
> On Sun, 2007-12-30 at 18:56 +0800, Ping Yin wrote:
> > AFAIK, commit sha1 is only determined by commit object content (say
> > parent commit, tree sha1 and so on). So why 'git commit --amend'
> > changes the commit sha1 when no content changes as following shows.
> >
> The full commit includes a timestamp too, which changed. Try setting the
> GIT_AUTHOR_DATE and GIT_COMMITTER_DATE environment variables, you should
> get the same SHA-1 everytime.
>

Thanks. With 'git show --pretty=fuller', I find that commit date changes each time and that author date keeps the same.

-- 
Ping Yin

← back to recent threads