সংক্ষিপ্ত উত্তর (টিএল; ডিআর)
"ট্রি-ইশ" এমন একটি শব্দ যা কোনও শনাক্তকারীকে বোঝায় ( গিট রিভিশনস ডকুমেন্টেশনে উল্লিখিত ) যা শেষ পর্যন্ত একটি (সাব) ডিরেক্টরি ট্রিকে নিয়ে যায় (গিট ডিরেক্টরিগুলি "গাছ" এবং "ট্রি অবজেক্টস" হিসাবে নির্দেশ করে)।
মূল পোস্টারের ক্ষেত্রে, foo
একটি ডিরেক্টরি যা তিনি নির্দিষ্ট করতে চান। গিতে একটি (উপ) ডিরেক্টরি নির্দিষ্ট করার সঠিক উপায় হ'ল এই "ট্রি-ইশ" সিনট্যাক্স ( গিট রিভিশনস ডকুমেন্টেশন থেকে আইটেম # 15 ) ব্যবহার করুন:
<rev>:<path>
যেমন HEAD:README
, :README
,master:./README
একটি প্রত্যয় :
অনুসরণের পরে কোনও পথটি কোলনের পূর্বে অংশ অনুসারে বৃক্ষ-ইশ অবজেক্টে প্রদত্ত পথে ব্লব বা গাছের নাম দেয়।
সুতরাং, অন্য কথায়, master:foo
সঠিক বাক্য গঠন, না master/foo
।
অন্যান্য "ট্রি-ইশ" (প্লাস কমিট-ইশ)
কমিট-ইশ এবং ট্রি-ইশ শনাক্তকারীদের একটি সম্পূর্ণ তালিকা এখানে রয়েছে ( গিট রিভিশনস ডকুমেন্টেশন থেকে , এটি নির্দেশ করার জন্য লোপসিকে ধন্যবাদ ):
----------------------------------------------------------------------
| 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, :README, master:./README
----------------------------------------------------------------------
| Tree-ish? | Examples
----------------------------------------------------------------------
| 16. :<n>:<path> | :0:README, :README
----------------------------------------------------------------------
সনাক্তকারী # 1-14 সমস্ত "কমিট-ইশ", কারণ এগুলি সকলেই কমিট করার দিকে পরিচালিত করে, তবে যেহেতু কমিটগুলি ডিরেক্টরি গাছগুলিতেও নির্দেশ করে, তারা সবশেষে (উপ) ডিরেক্টরি গাছের বস্তুগুলিকে নিয়ে যায় এবং তাই "ট্রি হিসাবেও ব্যবহার করা যেতে পারে" পর "।
# 15 টি ট্রি-ইশ হিসাবেও ব্যবহার করা যেতে পারে যখন এটি একটি (সাব) ডিরেক্টরি উল্লেখ করে তবে এটি নির্দিষ্ট ফাইলগুলি সনাক্ত করতেও ব্যবহার করা যেতে পারে। এটি যখন ফাইলগুলিকে বোঝায় তখন আমি নিশ্চিত নই যে এটি এখনও "ট্রি-ইশ" হিসাবে বিবেচিত হয়েছে, বা যদি "ব্লব-ইশ" এর মতো আরও কাজ করে (গিট ফাইলগুলিকে "ব্লাবস" বলে উল্লেখ করে)।
দীর্ঘ উত্তর
এর সর্বনিম্ন স্তরে, গিট চারটি মূল উপাদান ব্যবহার করে উত্স কোডের উপর নজর রাখে:
- টীকাগুলি ট্যাগ, যা নির্দেশ করে।
- কমিটস, যা আপনার প্রকল্পের মূল ডিরেক্টরি গাছকে নির্দেশ করে।
- গাছগুলি, যা ডিরেক্টরি এবং উপ-ডিরেক্টরি হয়।
- ব্লবস, যা ফাইল।
লিনাস টরভাল্ডস গিটকে একটি বিষয়বস্তু-ঠিকানাযোগ্য ফাইল সিস্টেমের মতো ডিজাইন করেছেন , এই ফাইলগুলির প্রত্যেকটির নিজস্ব sha1 হ্যাশ আইডি রয়েছে, ফাইলগুলি তাদের সামগ্রীর উপর ভিত্তি করে ফাইলগুলি পুনরুদ্ধার করা যায় (ফাইলের সামগ্রী থেকে sha1 আইডি তৈরি করা হয়)। প্রো গিট বইটি এই চিত্রটি দেয় :
অনেক গিট কমান্ড কমিট এবং (উপ) ডিরেক্টরি গাছের জন্য বিশেষ শনাক্তকারী গ্রহণ করতে পারে:
"কমিট-ইশ" শনাক্তকারী যা শেষ পর্যন্ত একটি কমিটের বস্তুকে নিয়ে যায়। উদাহরণ স্বরূপ,
tag -> commit
"ট্রি-ইশ" হ'ল শনাক্তকারী যা শেষ পর্যন্ত গাছের (অর্থাৎ ডিরেক্টরি) অবজেক্টগুলিতে নিয়ে যায়।
tag -> commit -> project-root-directory
প্রতিশ্রুতিবদ্ধ অবজেক্টগুলি সর্বদা একটি ডিরেক্টরি ট্রি অবজেক্টকে (আপনার প্রকল্পের মূল ডিরেক্টরি) নির্দেশ করে, "কমিট-ইশ" এমন কোনও সনাক্তকারীই সংজ্ঞা অনুসারে "ট্রি-ইশ" হয়। অন্য কথায়, কোনও শনাক্তকারী যা প্রতিশ্রুতিবদ্ধ অবজেক্টের দিকে পরিচালিত করে সেগুলি (সাব) ডিরেক্টরি ট্রি ট্রি অবজেক্টের দিকে পরিচালিত করতেও ব্যবহৃত হতে পারে ।
কিন্তু যেহেতু ডিরেক্টরি ট্রি অবজেক্টগুলি কখনই গিতের সংস্করণ সিস্টেমে প্রতিশ্রুতি দেয় না, তাই প্রতিটি (সনাক্তকারী) ডিরেক্টরি ট্রিটিতে চিহ্নিত প্রতিটি শনাক্তকারীও প্রতিশ্রুতিতে নির্দেশ করতে ব্যবহার করতে পারে না। অন্য কথায়, "কমিট-ইশ" সনাক্তকারীদের সেট "ট্রি-ইশ" সনাক্তকারীদের সেটটির একটি কঠোর উপসেট set
ডকুমেন্টেশনে বর্ণিত হিসাবে ( এটি ট্রবার আমাকে এটির জন্য সহায়তা করার জন্য ধন্যবাদ ):
<tree>
একটি গাছের বস্তুর নাম ইঙ্গিত করে।
<commit>
প্রতিশ্রুতিবদ্ধ বস্তুর নাম ইঙ্গিত করে।
<tree-ish>
একটি গাছ, প্রতিশ্রুতিবদ্ধ বা ট্যাগের নাম নির্দেশ করে name একটি কমান্ড যা <tree-ish>
আর্গুমেন্ট গ্রহণ করে শেষ পর্যন্ত কোনও <tree>
অবজেক্টে অপারেট করতে চায় তবে স্বয়ংক্রিয়ভাবে ডি-রেফারেন্স <commit>
এবং <tag>
অবজেক্টস যা একটি এ নির্দেশ করে <tree>
।
<commit-ish>
প্রতিশ্রুতিবদ্ধ বা ট্যাগ অবজেক্টের নাম নির্দেশ করে। একটি কমান্ড যা <commit-ish>
আর্গুমেন্ট গ্রহণ করে শেষ পর্যন্ত কোনও <commit>
অবজেক্টে অপারেট করতে চায় তবে স্বয়ংক্রিয়ভাবে একটিতে <tag>
বিন্দুতে অবজেক্টগুলিকে ডিপ্রের করে <commit>
।
যে গাছ পর শনাক্তকারী সেট হিসাবে ব্যবহার করা যাবে না কমিট পর হয়
<rev>:<path>
, যা সরাসরি ডিরেক্টরি গাছগুলিতে নিয়ে যায়, বস্তু প্রতিশ্রুতি দেয় না। উদাহরণস্বরূপ HEAD:subdirectory
,।
ডিরেক্টরি ট্রি অবজেক্টের শ 1 শনাক্তকারী ।
master:foo
গাছ-ইশ, তবে আপনিmaster foo
হিসাবে ভাল ব্যবহার<tree-ish> <path>
।