Sebuah pohon adalah kumpulan hirarki dari file dan direktori, tidak terikat pada titik tertentu dalam sejarah. Misalnya, jika Anda membuat file dan kemudian menghapus file (tanpa melakukan intervensi lain), Anda akan berakhir dengan pohon yang sama dengan yang Anda mulai.
Sebuah komit adalah titik dalam sejarah proyek Anda. Komit menentukan pohon, tetapi juga berisi informasi lain seperti penulis / pengangkat dan waktu, pesan komit (di mana penulis menggambarkan apa yang berubah), dan yang paling penting nol atau lebih orangtua, yang merupakan keadaan repositori sebelumnya. (Komit pertama Anda memiliki nol orang tua. Sebagian besar komit setelah itu memiliki satu orangtua selama pengembangan linier, dan lebih dari satu jika Anda bergabung.)
Anda bisa mengetahui bagaimana ini bekerja dengan git cat-file -p
perintah, yang mencetak konten hash tertentu, terlepas dari jenisnya. Misalnya, untuk melihat komit HEAD, Anda dapat menjalankan:
$ git cat-file -p HEAD
tree 81ca1cb660ea79131336944df28b13b711d93557
parent 92b6b8fe9956866ace5397e060e7cc8ee1c76233
parent 7ea2575ed96d150ee19f70edea4bd42c7c2f0b83
author Mislav MarohniÄ <mislav.marohnic@gmail.com> 1436468108 -0700
committer Mislav MarohniÄ <mislav.marohnic@gmail.com> 1436468108 -0700
Merge pull request #951 from github/global-args
Avoid depending on a hardcoded list of git global flags
Untuk melihat pohon di dalam komit itu, Anda dapat cat-file -p
melakukannya pohon:
$ git cat-file -p 81ca1cb660ea79131336944df28b13b711d93557
100644 blob 730f77a3be502cfe6769c1305c0b59c22274caf5 .gitignore
100644 blob bcbd000f6b9ad5b0510f804ac4a3b19306b39c03 .travis.yml
100644 blob da71aa1fa3c3ae47b2fe5e6245ce2eea1586e278 CONTRIBUTING.md
...
Demikian pula, jika Anda melihat orang tua, Anda akan melihat mereka juga berkomitmen. Sebuah istilah untuk pohon dalam komit seperti rev
is rev^{tree}
. Jadi perintah sebelumnya bisa ditulis git cat-file -p HEAD^{tree}
. Perhatikan bahwa rev^
singkatan dari induk rev
. Ketika ada beberapa orang tua, rev^1
, rev^2
, dll Informasi lebih lanjut tersedia di git halaman manual rev-parse .
commit has
artinya di awal paragraf ke-3 Anda?