คำถาม
อะไรคือตัวอย่างที่เฉพาะเจาะจงของการกระทำ-ish และ tree-ish ใน Git
คำถาม Stack Overflow "tree-ish หมายถึงอะไรในคอมไพล์" เกี่ยวข้องกับ tree-ish โดยเฉพาะ แต่ฉันต้องการทำความเข้าใจเพิ่มเติมเกี่ยวกับทั้งสองอย่าง
พื้นหลัง
การใช้งานในเอกสาร
เอกสาร Gitมีการอ้างถึง "comm-ish" และ "tree-ish" หลายรายการ ตัวอย่างเช่นหากคุณกำลังตรวจสอบซอร์สโค้ด Git :
$ git grep --files-with-matches --extended-regexp "commit(-)*ish"
config.txt
git-describe.txt
git-fast-import.txt
git-name-rev.txt
git-push.txt
git-rebase.txt
git-rev-parse.txt
git.txt
gitcli.txt
glossary-content.txt
howto/revert-branch-rebase.txt
revisions.txt
และ
$ git grep --files-with-matches --extended-regexp "tree(-)*ish" | \
$ grep --invert-match RelNotes
diff-format.txt
diff-generate-patch.txt
git-archive.txt
git-cat-file.txt
git-checkout.txt
git-diff-index.txt
git-diff-tree.txt
git-ls-files.txt
git-ls-tree.txt
git-merge-tree.txt
git-read-tree.txt
git-reset.txt
git-svn.txt
git.txt
gitcli.txt
gittutorial-2.txt
glossary-content.txt
revisions.txt
คำนิยาม
เอกสาร Git กำหนดสิ่งที่ "กระทำ-ish" และ "tree-ish" คือ :
<tree>ระบุชื่อวัตถุต้นไม้
<commit>ระบุชื่ออ็อบเจ็กต์คอมมิต
<tree-ish>ระบุต้นไม้คอมมิตหรือแท็กชื่ออ็อบเจ็กต์ คำสั่งที่รับ
<tree-ish>อาร์กิวเมนต์ในที่สุดต้องการดำเนินการกับ<tree>อ็อบเจ็กต์ แต่ dereferences โดยอัตโนมัติ<commit>และ<tag>อ็อบเจ็กต์ที่ชี้ไปที่ a<tree>.<commit-ish>ระบุชื่ออ็อบเจ็กต์คอมมิตหรือแท็ก คำสั่งที่ใช้
<commit-ish>อาร์กิวเมนต์ในท้ายที่สุดต้องการที่จะทำงานบน<commit>วัตถุโดยอัตโนมัติ แต่ dereferences วัตถุจุดที่ว่า<tag><commit>
เอกสารไม่ชัดเจนเพียงพอ
แม้ว่าเอกสารข้างต้นจะระบุว่า "คอมมิต - อิช" และ "ทรี - อิช" คืออะไร แต่ฉันก็ยังพบว่ามันคลุมเครือและไม่ชัดเจนเกินไป
อะไรคือตัวอย่างที่เฉพาะเจาะจงของ "คอมมิต - อิช" และ "ทรี - อิช" และต่างกันอย่างไร

stash@{0}อย่าลืมเกี่ยวกับ ฉันอยากรู้ว่าตรงไหนที่เหมาะกับทั้งหมดนี้ มีสิ่งอื่น ๆ เช่นที่ซ่อน (my-thing@{0}) หรือไม่? ที่ซ่อนเป็นเพียง<refname>?