গিট-এ গাছ বলতে কী বোঝায়?


122

আমি কীভাবে ব্যবহার করব সে সম্পর্কে আমি খুব বিভ্রান্ত git archive

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

আমি শিখেছি যে আমি git-archiveকোনও এসভিএন-ইশ রফতানির ক্ষেত্রে ব্যবহার করতে পারি ।

তবে এখানে জিনিসটি রয়েছে, নিম্নলিখিতটি ভাল কাজ করে:

git archive master | tar -x -C ~/destination

এটি গন্তব্য ফোল্ডারে ফু , বার , বাজ ফোল্ডারগুলির ফলাফল ।

তবে, নিম্নলিখিতগুলির সাথে ত্রুটিযুক্ত হবেfatal not a valid object name :

git archive master/foo | tar -x -C ~/destination

ডকুমেন্টেশন

git archiveপ্রোগ্রামটির সংক্ষিপ্তসার হিসাবে আমি দেখতে পাচ্ছি যে এটি <tree-ish> [path]প্যারামিটার হিসাবে নিতে পারে (সংশ্লেষণের সাথে সংযুক্তিযুক্ত অংশে সংক্ষেপে):

git archive <tree-ish> [path...]

যদি master/foo তা না হয় tree-ish, তবে কী?


2
master:fooগাছ-ইশ, তবে আপনি master fooহিসাবে ভাল ব্যবহার <tree-ish> <path>
জাকুব নরবস্কি

1
আমি <tree-ish> এবং [পথের] বিশেষণ হিসাবে ব্যাখ্যা করেছি। এখানেই আমি ভুল হয়ে গেলাম। এবং আমি যে সমস্ত উদাহরণ দেখেছি সেগুলি কেবল কমান্ডের << ট্রি-ইশ> অংশ ব্যবহার করেছে, তাই আমি ভুলভাবে ধরে নিয়েছিলাম যে তারা একটি '<ট্রি-ish> পথ ব্যবহার করছে। ওহ শব্দার্থবিজ্ঞান :)
ডিসকিনজার


3
আমার এই প্রশ্নটির সাথে একটি সমস্যা আছে কারণ শিরোনামটি বৃক্ষ-ইশটি গিটের মধ্যে রয়েছে সে সম্পর্কে জিজ্ঞাসা করে তবে এটি শুরু হয় এবং প্রধানত কিছু কমান্ড সম্পর্কে বলে মনে হয়। তদ্ব্যতীত, গৃহীত উত্তরটি গাছ-ইশ শব্দটির অর্থ কী তা বোঝায় বলে মনে হয় না। হয় প্রশ্নের শিরোনাম অবশ্যই পরিবর্তন করতে হবে অথবা প্রশ্ন অবশ্যই পরিবর্তন করতে হবে। আমি পরামর্শ দিচ্ছি যে শিরোনামটি প্রশ্নটি আসলে কী ঘটেছিল এবং গ্রহণযোগ্য উত্তর কী ছিল তার সাথে আরও ভালভাবে খাপ খায়। অথবা হতে পারে প্রশ্নের শিরোনাম আসলে কী এর গৃহীত উত্তর পরিবর্তন করে। অথবা উত্তরটি প্রশ্নের শিরোনামের ঠিকানা দেওয়া উচিত।
চার্লি পার্কার

@ চার্লিপার্কার স্পষ্টতই git archiveকমান্ডের জন্য ম্যান পেজগুলি আর ট্রি- ইশকে উল্লেখ করে না, তবে আমি যখন এই প্রশ্নটি জিজ্ঞাসা করেছি তারা তা করেছে। এবং গৃহীত উত্তর সম্পর্কে; এ সময় আর কেউই প্রশ্নের উত্তর দেওয়ার জন্য মাথা ঘামায় না। এর দু'বছর পরে আরও একটি উত্তর পোস্ট করা হয়েছিল।
ডিসকিনজার

উত্তর:


166

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

"ট্রি-ইশ" এমন একটি শব্দ যা কোনও শনাক্তকারীকে বোঝায় ( গিট রিভিশনস ডকুমেন্টেশনে উল্লিখিত ) যা শেষ পর্যন্ত একটি (সাব) ডিরেক্টরি ট্রিকে নিয়ে যায় (গিট ডিরেক্টরিগুলি "গাছ" এবং "ট্রি অবজেক্টস" হিসাবে নির্দেশ করে)।

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

দীর্ঘ উত্তর

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

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

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

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

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

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

    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>

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

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

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


আপনার টেবিলে এন্ট্রি 16 সম্পর্কে কী? এর অর্থ কী আপনি গাছের ইশ কিনা তা নিশ্চিত নন কি? 0টি সংশ্লেষের রাজ্যকে বোঝায় এবং এই ধারণাটি কেবলমাত্র ব্লবগুলিতে প্রযোজ্য, যেহেতু সূচীতে ডিরেক্টরিগুলিও নেই। দেখুন: স্ট্যাকওভারফ্লো . com / a / 25806452 / 895245 । সুতরাং প্রশ্নটি তখন নেমে আসে: সমস্ত ব্লব-ইশগুলিও গাছ-ইশ হয়? যতদূর আমি হ্যাঁ বলতে পারেন: সব মানুষ পৃষ্ঠাগুলি ব্যবহার <tree-ish>উভয় গ্রহণ করো এবং man gitrevisionsকরবেঃ trees ("directories of files")
সিরো সান্তিলি 法轮功 冠状 病 六四 事件 法轮功

নোট যেটি git-archiveবলে যে এটি গ্রহণ করে <tree-ish>তবে এটি এটিকে অস্বীকার করে <sha1>। সুতরাং আমি অনুমান করি যে এটি পরিবর্তে একটি জন্য জিজ্ঞাসা করা উচিত <tree-ish-ish>stackoverflow.com/a/12073669/680464
juanitogan

তবে আমি যা ঘটে যখন আমি ব্যবহার সম্পর্কে আশ্চর্য <Rev>: (যে কোন পথ ?. এটা চেষ্টা হিসাবে কাজ করে ছাড়া - কিন্তু আমি ডকুমেন্টেশন প্রাসঙ্গিক অধ্যায় খুঁজে পাচ্ছি না।
মার্টিন Vejmelka

49

একটি গাছ-ইশ একটি নির্দিষ্ট গাছের নামকরণের একটি উপায় যা নিম্নলিখিতগুলির মধ্যে একটি হতে পারে:

  • উল্লেখগুলি:
    • মস্তক
    • ট্যাগ
    • শাখার নাম
    • রিমোটগুলি সহ শাখার নামগুলি origin/somebranch
  • কাটা
  • সংক্ষিপ্ত হ্যাশ

যে উপরে, উপরের কোনটির সাথে যোগ করা যেতে পারে ^, ~। রেফারেন্সগুলি @{}কিছু অতিরিক্ত বৈশিষ্ট্যগুলির জন্য স্বরলিপিটিও ব্যবহার করতে পারে :

  • HEAD^বা HEAD^1হেডের প্রথম পিতামাতার কাছে সমাধান করা হবে।
  • HEAD^2 দ্বিতীয় পিতামাতার কাছে সমাধান করবে
  • HEAD^3তৃতীয় পিতা বা মাতার সাথে সমাধান করবে, যা আরও বিরল এবং অক্টোপাস কৌশলটির সাথে একত্রীকরণের পণ্য ।
  • HEAD~বা HEAD~1মাথার প্রথম পিতামাতার কাছে সমাধান করবে
  • HEAD~2হেডের প্রথম পিতামাতার প্রথম পিতামাতার সাথে সমাধান করবে। এই হিসাবে একই হবেHEAD^^
  • HEAD@{0} বর্তমান হেড সমাধান করবে
  • HEAD@{1}পূর্ববর্তী মাথা থেকে সমাধান করা হবে। এটি কেবল রেফারেন্স দ্বারা ব্যবহার করা যেতে পারে কারণ এটি রেফারেন্স লগটি ব্যবহার করে। HEADপ্রতিটি প্রতিশ্রুতিবদ্ধতার ক্ষেত্রে , একত্রীকরণ, চেকআউট HEAD এর মান পরিবর্তন করবে এবং এভাবে লগে যুক্ত করবে। git reflog HEADরেফারেন্স লগটি প্রদর্শিত হবে যেখানে আপনি হেডের সমস্ত গতিবিধি দেখতে পাবেন এবং সঠিকভাবে কী @{1}এবং এর থেকে সমাধান হবে।

: উপরে অধিকাংশই আরও যতদিন মিলিত হতে পারে যেমন আপনার সংগ্রহস্থলের মধ্যে জ্ঞান করে তোলে, উদাহরণস্বরূপ HEAD@{2}~3, somebranch^2~4, c00e66e~4^2, anotherbranch~^~^~^

সুতরাং উপরোক্ত বর্ণিতগুলির মধ্যে এবং এর সংমিশ্রণগুলির মধ্যে একটি, বৃক্ষ-ইশ হিসাবে ডকুমেন্টেশনের মধ্যে যা বোঝানো হয়েছে, এটি গাছের (বা পুনর্বিবেচনা) কোনটি হ'ল বেশিরভাগ গিট কমান্ডের জন্য ব্যবহার করা উচিত তা বলার উপায়।

গিট বইয়ের রিভিশন নির্বাচনের আরও তথ্য ।


1
এই উত্তরটি সাধারণভাবে সংশোধনগুলি (কমিট-ইশেস) ব্যাখ্যা করে এবং গুরুত্বপূর্ণ ক্ষেত্রে মিস করে: master:path/to/directoryযা গাছ-ইশ তবে কমিট-ইশ নয়। কাপকেক এর বিষয়টি আরও পরিষ্কার করে দেয়।
সিওরো সান্তিলি 法轮功 冠状 病 六四 事件 法轮功

11

আপনি সম্ভবত চান

git archive master foo | tar -x -C ~/destination

এক্সপ্রেশনটি master/fooকোনও অর্থবোধ করে না: masterএকটি শাখার নাম এবং fooএটি আমার ডিরেক্টরি অনুসারে একটি ডিরেক্টরি নাম।

সম্পাদনা : (ভাঙা লিঙ্কটি সরানো হয়েছে comments মন্তব্যগুলি দেখুন))


"ট্রি" শব্দটি আর আপনার "গিট ট্রিশিস" লিঙ্কে পাওয়া যায় না। এফওয়াইআই
রবার্ট

ট্রিশ সাধারণত সংশোধন গাছকে বোঝায়, ডিরেক্টরি বিন্যাসে নয়।
জর্জেন স্ট্রোবেল

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

6

সংজ্ঞা জন্য <tree-ish>এবং <commit-ish>দেখতে Git (1) man পৃষ্ঠা। আপনাকে পদগুলি অনুসন্ধান করতে হবে। সাধারণভাবে <tree-ish>গিট গাছের বস্তুর একটি রেফারেন্স, তবে আপনি যদি গাছের (যেমন প্রতিশ্রুতি বা শাখা) উল্লেখ করে এমন কোনও বস্তু পাস করেন তবে গিটটি স্বয়ংক্রিয়ভাবে রেফারেন্সড ট্রি ব্যবহার করবে।


এবং gitrevisions(7)
জিওনগ চিয়ামিভ

0

আমি উত্স নিয়ন্ত্রণ এবং গিট একটি নবাগত। এই আমি জানি। একটি গাছ একটি সংগ্রহস্থলের ফাইলগুলির কাঠামো। এটি কোনও ফাইল সিস্টেমের ডিরেক্টরিতে অনুরূপ S দেখুন - কোন গিট সরঞ্জামটি এই গাছের দৃশ্যটি তৈরি করেছে?

গাছ-ইশ মানে গাছের মতো। এটি গাছের একটি অংশ বা অঙ্গীকারের উল্লেখ করে। আপনি এগুলির যে কোনও একটি ব্যবহার করে একটি প্রতিশ্রুতি রেফারেন্স করতে পারেন: কোনও কমিটের শ্যাড -1 হ্যাশের সম্পূর্ণ বা অংশ, শিরোনামের পয়েন্টার, শাখা রেফারেন্স, ট্যাগ রেফারেন্স। পূর্বপুরুষ বা প্রতিশ্রুতিবদ্ধদের পিতামাতাদের সাথে অন্য কোনও পদ্ধতিতে উল্লিখিত পদ্ধতিগুলি ব্যবহার করে। পূর্বপুরুষদের উদাহরণ: এখানে চিত্র বর্ণনা লিখুন


0

গিট গ্লসারি ট্রি-ইশ থেকে শুরু করে একটি গাছের বস্তু বা এমন একটি বস্তু যা গাছের বস্তুর কাছে পুনরুত্থিতভাবে বিবেচনা করা যায় " কমিট, হেড এবং ট্যাগ গাছ-ইশ বস্তুর উদাহরণ।

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