ต้นไม้เป็นคอลเลกชันลำดับชั้นของไฟล์และไดเรกทอรีไม่เชื่อมโยงกับจุดใดจุดหนึ่งในประวัติศาสตร์ ตัวอย่างเช่นหากคุณสร้างไฟล์และจากนั้นลบไฟล์ในภายหลัง (โดยไม่มีการคอมมิทใด ๆ แทรกแซง) คุณจะต้องจบด้วยต้นไม้เดียวกันกับที่คุณเริ่มต้นด้วย
การกระทำเป็นจุดในประวัติศาสตร์ของโครงการของคุณ กระทำระบุต้นไม้ แต่ยังมีข้อมูลอื่น ๆ เช่นผู้เขียน / committer และเวลาข้อความกระทำ (ซึ่งผู้เขียนอธิบายสิ่งที่เปลี่ยนแปลง) และที่สำคัญที่สุดคือศูนย์หรือมากกว่าพ่อแม่ซึ่งเป็นสถานะก่อนหน้าของพื้นที่เก็บข้อมูล (ความมุ่งมั่นแรกของคุณมีผู้ปกครองเป็นศูนย์ส่วนใหญ่กระทำหลังจากนั้นให้ผู้ปกครองคนหนึ่งในระหว่างการพัฒนาเชิงเส้นและมากกว่าหนึ่งถ้าคุณผสาน)
คุณสามารถรับความรู้สึกของวิธีการทำงานกับgit cat-file -p
คำสั่งซึ่งพิมพ์เนื้อหาของแฮเฉพาะโดยไม่คำนึงถึงประเภท ตัวอย่างเช่นหากต้องการดู HEAD commit คุณสามารถเรียกใช้:
$ 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
หากต้องการดูต้นไม้ที่อยู่ข้างในคุณสามารถcat-file -p
ใช้ต้นไม้:
$ git cat-file -p 81ca1cb660ea79131336944df28b13b711d93557
100644 blob 730f77a3be502cfe6769c1305c0b59c22274caf5 .gitignore
100644 blob bcbd000f6b9ad5b0510f804ac4a3b19306b39c03 .travis.yml
100644 blob da71aa1fa3c3ae47b2fe5e6245ce2eea1586e278 CONTRIBUTING.md
...
ในทำนองเดียวกันถ้าคุณดูที่ผู้ปกครองคุณจะเห็นว่ามีความมุ่งมั่นเช่นกัน ชวเลขต้นไม้ภายในกระทำเช่นมีrev
rev^{tree}
ดังนั้นคำสั่งก่อนหน้านี้สามารถเขียนgit cat-file -p HEAD^{tree}
ได้ โปรดทราบว่าย่อมาจากแม่ของrev^
rev
เมื่อมีผู้ปกครองหลายrev^1
, rev^2
ฯลฯ ข้อมูลเพิ่มเติมสามารถดูได้ในหน้าคนรอบ-แจงคอมไพล์
commit has
หมายถึงจุดเริ่มต้นของย่อหน้าที่ 3 ของคุณหรือไม่