Hashes principais:
$ git log --graph
* commit c06c4c912dbd9ee377d14ec8ebe2847cf1a3ec7e
|\ Merge: 79e6924 3113760
| | Author: linjie <[email protected]>
| | Date: Mon Mar 14 16:02:09 2016 +0800
| |
| | commit5
| |
| | Merge branch 'dev'
| |
| * commit 31137606f85d8960fa1640d0881682a081ffa9d0
| | Author: linjie <[email protected]>
| | Date: Mon Mar 14 16:01:26 2016 +0800
| |
| | commit3
| |
* | commit 79e69240ccd218d49d78a72f33002fd6bc62f407
|/ Author: linjie <[email protected]>
| Date: Mon Mar 14 16:01:59 2016 +0800
|
| commit4
|
* commit 7fd4e3fdddb89858d925a89767ec62985ba07f3d
| Author: linjie <[email protected]>
| Date: Mon Mar 14 16:01:00 2016 +0800
|
| commit2
|
* commit 316dd3fb3c7b501bc9974676adcf558a18508dd4
Author: linjie <[email protected]>
Date: Mon Mar 14 16:00:34 2016 +0800
commit1
$ git log --pretty=format:'%<(82)%P %s'
79e69240ccd218d49d78a72f33002fd6bc62f407 31137606f85d8960fa1640d0881682a081ffa9d0 commit5
7fd4e3fdddb89858d925a89767ec62985ba07f3d commit4
7fd4e3fdddb89858d925a89767ec62985ba07f3d commit3
316dd3fb3c7b501bc9974676adcf558a18508dd4 commit2
commit1
Você pode ver commit4 e commit3 é pai de commit5 , commit2 é pai de commit3 e commit4 , commit1 é pai de commit2 .
Hash da árvore:
$ git log --pretty=format:'%T %s'
f3c7cee96f33938631a9b023ccf5d8743b00db0e commit5
e0ecb42ae45ddc91c947289f928ea5085c70b208 commit4
d466aea17dc07516c449c58a73b2dc3faa9d11a1 commit3
b39f2e707050e0c5bbb3b48680f416ef05b179ba commit2
5706ec2b32605e27fa04cbef37d582325d14dda9 commit1
$ git cat-file -p f3c7ce
100644 blob 8bb2e871e94c486a867f5cfcbc6f30d004f6a9e5 dev
100644 blob 47f16c8e00adba77ec5c176876e99c8e9f05d69b master
$ git cat-file -p 5706ec
100644 blob fc0bfde0d44bb4d6c7d27b6e587ebedd34ba5911 master
A função do comando: Imprime bastante o conteúdo de <object>
com base em seu tipo.
git cat-file -p
No git, todo o conteúdo é armazenado como objetos tree e blob, com árvores correspondentes a entradas de diretório UNIX e blobs correspondendo mais ou menos a inodes ou conteúdos de arquivo. Um único objeto de árvore contém uma ou mais entradas de árvore, cada uma contendo um ponteiro SHA-1 para um blob ou subárvore com seu modo, tipo e nome de arquivo associados. O Git normalmente cria uma árvore tomando o estado da sua área de teste ou índice e escrevendo uma série de objetos de árvore a partir dela. Objetos de confirmação têm as informações sobre quem salvou o objeto de árvore, quando eles salvaram ou por que eles foram salvos. Esta é a informação básica que o objeto commit armazena para você.
Conclusão:
Commit hash, Parent hash, Tree hash são todos SHA-1. Commit hash e Parent hash são idênticos, exceto o hash Pai has child. O hash da árvore representa um objeto Árvore. Commit hash e Parent hash representam um objeto de commit.