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