গিতে কমিট-ইশ এবং ট্রি-ইশ কী?


117

প্রশ্নটি

গিতে কমিট-ইশ এবং ট্রি-ইশের নির্দিষ্ট উদাহরণ কী কী?

স্ট্যাক ওভারফ্লো প্রশ্ন "গিটের মধ্যে গাছ-ইশ মানে কী?" গাছ-ইশকে বিশেষভাবে ডিল করে তবে আমি উভয় সম্পর্কে আরও জানতে চাই ।

পটভূমি

ডকুমেন্টেশন ব্যবহার

গিট ডকুমেন্টেশনটি "কমিট-ইশ" এবং "ট্রি-ইশ" এর জন্য একাধিক উল্লেখ করেছে। উদাহরণস্বরূপ, আপনি যদি গিট উত্স কোডটি পরীক্ষা করছেন :

$ 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

সংজ্ঞা

গিট ডকুমেন্টেশন সংজ্ঞা দেয় "কমিট-ইশ" এবং "ট্রি-ইশ" কী :

<tree>

একটি গাছের বস্তুর নাম ইঙ্গিত করে।

<commit>

প্রতিশ্রুতিবদ্ধ বস্তুর নাম ইঙ্গিত করে।

<tree-ish>

একটি গাছ, প্রতিশ্রুতিবদ্ধ বা ট্যাগ নাম বস্তুর নাম ইঙ্গিত করে। একটি কমান্ড যা <tree-ish> আর্গুমেন্ট গ্রহণ করে চূড়ান্তভাবে কোনও <tree>অবজেক্টে কাজ করতে চায় তবে স্বয়ংক্রিয়ভাবে একটি এ-তে নির্দেশিত ডিগ্রিফিকেশন <commit>এবং <tag>অবজেক্ট<tree>

<commit-ish>

প্রতিশ্রুতিবদ্ধ বা ট্যাগ অবজেক্টের নাম নির্দেশ করে। একটি কমান্ড যা <commit-ish> আর্গুমেন্ট গ্রহণ করে শেষ পর্যন্ত কোনও <commit>অবজেক্টে অপারেট করতে চায় তবে স্বয়ংক্রিয়ভাবে একটিতে <tag>বিন্দুতে অবজেক্টগুলিকে ডিপ্রের করে<commit>

ডকুমেন্টেশন যথেষ্ট সাফ নয়

যদিও উপরের ডকুমেন্টেশনগুলি "কমিট-ইশ" এবং "ট্রি-ইশ" কী তা সংজ্ঞায়িত করেছে, তবুও আমি এটি খুব অস্পষ্ট এবং অস্পষ্ট বলে মনে করি।

"কমিট-ইশ" এবং "ট্রি-ইশ" এর নির্দিষ্ট উদাহরণগুলি কী কী এবং সেগুলি একে অপরের থেকে কীভাবে আলাদা?

উত্তর:


156

সংক্ষিপ্ত উত্তর (টিএল; ডিআর)

কমিট-ইশ এবং ট্রি-ইশ শনাক্তকারীদের একটি সম্পূর্ণ তালিকা এখানে ( গিট সংশোধন ডকুমেন্টেশন থেকে ):

----------------------------------------------------------------------
|    Commit-ish/Tree-ish    |                Examples
----------------------------------------------------------------------
|  1. <sha1>                | dae86e1950b1277e545cee180551750029cfe735
|  2. <describeOutput>      | v1.7.4.2-679-g3bee7fb
|  3. <refname>             | master, heads/master, refs/heads/master
|  4. <refname>@{<date>}    | master@{yesterday}, HEAD@{5 minutes ago}
|  5. <refname>@{<n>}       | master@{1}
|  6. @{<n>}                | @{1}
|  7. @{-<n>}               | @{-1}
|  8. <refname>@{upstream}  | master@{upstream}, @{u}
|  9. <rev>^                | HEAD^, v1.5.1^0
| 10. <rev>~<n>             | master~3
| 11. <rev>^{<type>}        | v0.99.8^{commit}
| 12. <rev>^{}              | v0.99.8^{}
| 13. <rev>^{/<text>}       | HEAD^{/fix nasty bug}
| 14. :/<text>              | :/fix nasty bug
----------------------------------------------------------------------
|       Tree-ish only       |                Examples
----------------------------------------------------------------------
| 15. <rev>:<path>          | HEAD:README.txt, master:sub-directory/
----------------------------------------------------------------------
|         Tree-ish?         |                Examples
----------------------------------------------------------------------
| 16. :<n>:<path>           | :0:README, :README
----------------------------------------------------------------------

সনাক্তকারী # 1-14 সমস্ত "কমিট-ইশ", কারণ তারা সকলেই কমিট করার দিকে পরিচালিত করে, তবে যেহেতু কমিটগুলি ডিরেক্টরি ট্রিগুলিতেও নির্দেশ করে, সেগুলি শেষ পর্যন্ত (উপ) ডিরেক্টরি গাছের বস্তুগুলিতে নিয়ে যায় এবং তাই "ট্রি হিসাবেও ব্যবহার করা যেতে পারে" পর "।

# 15 টি ট্রি-ইশ হিসাবেও ব্যবহার করা যেতে পারে যখন এটি একটি (সাব) ডিরেক্টরি উল্লেখ করে তবে এটি নির্দিষ্ট ফাইলগুলি সনাক্ত করতেও ব্যবহার করা যেতে পারে। এটি যখন ফাইলগুলিকে বোঝায় তখন আমি নিশ্চিত নই যে এটি এখনও "ট্রি-ইশ" হিসাবে বিবেচিত হয়েছে, বা যদি "ব্লব-ইশ" এর মতো আরও কাজ করে (গিট ফাইলগুলিকে "ব্লাবস" বলে উল্লেখ করে)।

দীর্ঘ উত্তর

গিটে কমিট এবং ডিরেক্টরি গাছ

এর সর্বনিম্ন স্তরে, গিট চারটি মূল উপাদান ব্যবহার করে উত্স কোডের উপর নজর রাখে:

  1. টীকাগুলি ট্যাগ, যা নির্দেশ করে।
  2. কমিটস, যা আপনার প্রকল্পের মূল ডিরেক্টরি গাছকে নির্দেশ করে।
  3. গাছগুলি, যা ডিরেক্টরি এবং উপ-ডিরেক্টরি হয়।
  4. ব্লবস, যা ফাইল।

লিনাস টরভাল্ডস গিটকে একটি বিষয়বস্তু-ঠিকানাযোগ্য ফাইল সিস্টেমের মতো ডিজাইন করেছেন , এই ফাইলগুলির প্রত্যেকটির নিজস্ব sha1 হ্যাশ আইডি রয়েছে, ফাইলগুলি তাদের সামগ্রীর উপর ভিত্তি করে ফাইলগুলি পুনরুদ্ধার করা যায় (ফাইলের সামগ্রী থেকে sha1 আইডি তৈরি করা হয়)। প্রো গিট বইটি এই চিত্রটি দেয় :

প্রো গিট বই থেকে চিত্র 9-3

কমিট-ইশ বনাম ট্রি-ইশ

অনেক গিট কমান্ড কমিট এবং (উপ) ডিরেক্টরি গাছের জন্য বিশেষ শনাক্তকারী গ্রহণ করতে পারে:

  • "কমিট-ইশ" শনাক্তকারী যা শেষ পর্যন্ত একটি কমিটের বস্তুকে নিয়ে যায়। উদাহরণ স্বরূপ,

    tag -> commit

  • "ট্রি-ইশ" হ'ল শনাক্তকারী যা শেষ পর্যন্ত গাছের (অর্থাৎ ডিরেক্টরি) অবজেক্টগুলিতে নিয়ে যায়।

    tag -> commit -> project-root-directory

প্রতিশ্রুতিবদ্ধ অবজেক্টগুলি সর্বদা একটি ডিরেক্টরি ট্রি অবজেক্টকে (আপনার প্রকল্পের মূল ডিরেক্টরি) নির্দেশ করে, "কমিট-ইশ" এমন কোনও সনাক্তকারীই সংজ্ঞা অনুসারে "ট্রি-ইশ" হয়। অন্য কথায়, কোনও শনাক্তকারী যা প্রতিশ্রুতিবদ্ধ অবজেক্টের দিকে পরিচালিত করে সেগুলি (সাব) ডিরেক্টরি ট্রি ট্রি অবজেক্টের দিকে পরিচালিত করতেও ব্যবহৃত হতে পারে

কিন্তু যেহেতু ডিরেক্টরি ট্রি অবজেক্টগুলি কখনই গিতের সংস্করণ সিস্টেমে প্রতিশ্রুতি দেয় না, তাই প্রতিটি (সনাক্তকারী) ডিরেক্টরি ট্রিটিতে চিহ্নিত প্রতিটি শনাক্তকারীও প্রতিশ্রুতিতে নির্দেশ করতে ব্যবহার করতে পারে না। অন্য কথায়, "কমিট-ইশ" সনাক্তকারীদের সেট "ট্রি-ইশ" সনাক্তকারীদের সেটটির একটি কঠোর উপসেট set

যে গাছ পর শনাক্তকারী সেট হিসাবে ব্যবহার করা যাবে না কমিট পর হয়

  1. <rev>:<path>, যা সরাসরি ডিরেক্টরি গাছগুলিতে নিয়ে যায়, বস্তু প্রতিশ্রুতি দেয় না। উদাহরণস্বরূপ HEAD:subdirectory,।

  2. ডিরেক্টরি ট্রি অবজেক্টের শ 1 শনাক্তকারী ।


3
আত করুন ভুলে stash@{0}। আমি এই সমস্ত যেখানে এটি ফিট করে তা জানতে চাই। স্ট্যাশ ( my-thing@{0}) এর মতো আর কি জিনিস আছে ? স্ট্যাশ কি ঠিক একটি <refname>?
নট

এটি পরিষ্কারভাবে পরিষ্কার করা হয়নি যে ট্রি-ইশ শনাক্তকারী কমিট-ইশ শনাক্তকারীর চেয়ে বেশি নির্দিষ্ট সনাক্তকারী বলে মনে হয় । সম্ভবত আমি অদ্ভুত তবে এটিকে ব্যাখ্যা করার একমাত্র বুদ্ধিমান উপায় আইএমও
স্টিভেন লু

29

নন-নেটিজ ইংলিশ [sic!] স্পিকারদের জন্য নোট: "-ish" একটি প্রত্যয় যা "বিশেষত" বা "সামান্য" এর মতো বৈশিষ্ট্যগুলি বোঝাতে একটি বিশেষণে প্রয়োগ করা যেতে পারে - দেখুন http://chambers.co.uk / অনুসন্ধান /? ক্যোয়ারী = পর & নাম = 21

সুতরাং "ট্রি-ইশ" - "গাছের মতো" .... "কমিট-ইশ" - "কমিট" এর মতো

উদাহরণস্বরূপ "মঙ্গলগ্রহ লাল রঙের তারার মতো প্রদর্শিত হয়" ("ডি" দ্বিগুণ!); "প্লেটের খাবার গরম ছিল না, তবে উষ্ণ ছিল"

আমি বিশ্বাস করি যে এটি "কী ..." আরও ভালভাবে ব্যাখ্যা করতে সহায়তা করে, এতে এটি ভাষার ব্যবহার ব্যাখ্যা করে।


আমি সবসময় "ট্রি-ইশ" এবং "কমিট-ইশ" এর অর্থ "সুইডিশ" বা "ইংরাজী" বলার অনুরূপ হতে বোধ করি। আপনি যে ব্যবহারটি বর্ণনা করেছেন তা আমার কাছে কম বোঝায় কারণ "ইশ" র ফর্মটি একটি বিশেষণ তৈরি করে। কিন্তু Rev এটি "মত" একটি গাছ নয় অথবা কমিট, হয় একটি গাছ বা কমিট। অন্যদিকে যদি আপনি "ইসহ" কে ভাষার প্রত্যয় হিসাবে মনে করেন তবে তারা কমান্ড লাইনে বিশেষ্য হিসাবে আরও বেশি অর্থবোধ করে, যেখানে "ট্রি-ইশ" বিশেষ্যটি এমন একটি ভাষা যা বিশেষ্য তৈরি করে। আমি জানি না কোন ব্যাখ্যাটি লেখকদের উদ্দেশ্য ছিল, তবে আমি এটি সর্বদা এটি দেখেছি।
jmt

আমি আপনার বক্তব্যটি দেখতে পাচ্ছি, তবে আমি স্থানীয় আঙ্গিকের বক্তৃতা হিসাবে আমার মনে ঠিকই ছাপ দিচ্ছিলাম!
মাইকডাব্লু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.