কোনও টীকাগুলি এবং অননোটযুক্ত ট্যাগের মধ্যে পার্থক্য কী?


332

আমি যদি বর্তমান প্রতিশ্রুতি ট্যাগ করতে চান। আমি নিম্নলিখিত দুটি কমান্ড লাইনের কাজ জানি:

git tag <tagname>

এবং

git tag -a <tagname> -m '<message>'

এই আদেশের মধ্যে পার্থক্য কি?



1
@Thilo এই না একটি সঠিক ডুপ্লিকেট। রেফারেন্সযুক্ত প্রশ্ন সম্পর্কিত পতাকাগুলি সম্পর্কে নয়, কখন টীকা দেওয়া উচিত is
টড এ। জ্যাকবস


টিএলডিআর অননোটেড: প্রতিশ্রুতিবদ্ধ; বর্ণিত: প্রতিশ্রুতিবদ্ধ, লেখক, তারিখ, (
alচ্ছিক

উত্তর:


254

টি এল; ডিআর

কমান্ডের মধ্যে পার্থক্য হ'ল একটি আপনাকে ট্যাগ বার্তা সরবরাহ করে যখন অন্যটি দেয় না। একটি টীকাযুক্ত ট্যাগে একটি বার্তা রয়েছে যা গিট শো (1) এর সাথে প্রদর্শিত হতে পারে, যখন টীকাবিহীন ট্যাগটি কেবল একটি প্রতিশ্রুতিবদ্ধ জন্য নির্দিষ্ট পয়েন্টার।

লাইটওয়েট ট্যাগ সম্পর্কে আরও

ডকুমেন্টেশন অনুসারে : "একটি লাইটওয়েট ট্যাগ তৈরি করতে, -a, -s, অথবা -m বিকল্পগুলির কোনও সরবরাহ করবেন না, কেবল একটি ট্যাগের নাম সরবরাহ করুন"। টীকাগুলি ট্যাগগুলিতে একটি বার্তা লেখার জন্য কিছু পৃথক বিকল্প রয়েছে:

  • আপনি যখন ব্যবহার করবেন git tag <tagname>, গিট বর্তমান সংশোধনীতে একটি ট্যাগ তৈরি করবে তবে আপনাকে কোনও টিকা দেওয়ার জন্য অনুরোধ করবে না। এটি কোনও বার্তা ছাড়াই ট্যাগ করা হবে (এটি একটি লাইটওয়েটের ট্যাগ)।
  • আপনি যখন ব্যবহার করবেন git tag -a <tagname>, গিট আপনাকে একটি টীকা দেওয়ার জন্য অনুরোধ করবে যদি আপনি কোনও বার্তা দেওয়ার জন্য -m পতাকা ব্যবহার না করেন।
  • আপনি যখন ব্যবহার করবেন git tag -a -m <msg> <tagname>, গিট কমিটিকে ট্যাগ করবে এবং সরবরাহিত বার্তার সাথে এটিকে টীকা দেবে।
  • আপনি যখন ব্যবহার করবেন তখন git tag -m <msg> <tagname>গিট এমন আচরণ করবে যেন আপনি টীকা দেওয়ার জন্য -a পতাকা পাস করেছেন এবং প্রদত্ত বার্তাটি ব্যবহার করবেন।

মূলত, আপনি ট্যাগটি কোনও টিকা এবং এর সাথে যুক্ত কিছু অন্যান্য তথ্য রাখতে চান তা কেবলমাত্র এটির পরিমাণেই।


4
কোনও ট্যাগ "টীকা" এবং প্রতিশ্রুতিবদ্ধ বার্তার মধ্যে কি পার্থক্য রয়েছে?
স্টিভ বেনেট

3
পুনঃটুইট ট্যাগ টীকাটি কোনও প্রতিশ্রুতিবদ্ধ বার্তা নয়। আপনি এটি গিট-লগ (1) দিয়ে দেখতে পারবেন না; আপনাকে গিট-শো (1) ব্যবহার করতে হবে।
টড এ জ্যাকবস

115
"এনোটেটেড" এবং "লাইটওয়েট" ট্যাগগুলির মধ্যে পার্থক্য বার্তার বাইরে beyond আপনি একটি বার্তা (ছাড়া ট্যাগ সটীক থাকতে পারে git tag -a <tag> -m ''), কিন্তু একটি সটীক ট্যাগ সবসময় ট্যাগার (লেখক) এবং তারিখ
পাইটর ফাইন্ডেন

1
আমার জন্যও একই. সংস্করণ ট্যাগগুলিতে সাধারণত বেশ অকেজো বার্তা থাকে (এটি নামের চেয়ে আরও বেশি কিছু বলতে পারে? কীসের জন্য?)। দুর্ভাগ্যক্রমে, এই শীর্ষ ভোটের উত্তরটিতে এই পার্থক্যের উল্লেখ নেই।
পাইওটর ফাইন্ডেন

44
আরেকটি গুরুত্বপূর্ণ বিষয় লক্ষণীয় হ'ল আপনি যখন নিজের ট্যাগগুলি ব্যবহার করে কোনও দূরবর্তী সংগ্রহস্থলের git push --follow-tagsদিকে ধাক্কা দেন, কেবলমাত্র বর্ণিত ট্যাগগুলিকেই চাপ দেওয়া হবে।
Xatoo

209

টীকাগুলি ট্যাগ ঠেকান, হালকা লোকাল রাখুন

man git-tag বলেছেন:

টীকাগুলি ট্যাগগুলি প্রকাশের জন্য বোঝানো হয় যখন হালকা ট্যাগ ব্যক্তিগত বা অস্থায়ী বস্তুর লেবেলের জন্য বোঝানো হয়।

এবং নির্দিষ্ট আচরণগুলি এই সুপারিশটি কার্যকর যেমন উপায়ে তাদের মধ্যে পার্থক্য করে:

  • টীকাগুলি ট্যাগগুলিতে একটি বার্তা, স্রষ্টা এবং তারিখ তারা যে প্রতিশ্রুতিবদ্ধ সেটির চেয়ে আলাদা থাকতে পারে। সুতরাং আপনি এগুলি কোনও মুক্তির প্রতিশ্রুতি না দিয়েই কোনও মুক্তির বর্ণনা দিতে ব্যবহার করতে পারেন।

    লাইটওয়েট ট্যাগগুলির অতিরিক্ত অতিরিক্ত তথ্য নেই এবং এটির প্রয়োজন নেই, যেহেতু আপনি কেবল এটি বিকাশের জন্য ব্যবহার করছেন।

  • গিট পুশ - ফলো-ট্যাগগুলি কেবল টীকায়িত ট্যাগগুলিকেই ধাক্কা দেবে
  • git describe কমান্ড লাইন বিকল্প ব্যতীত কেবল টীকায়িত ট্যাগগুলিই দেখুন

অভ্যন্তরীণ পার্থক্য

  • লাইটওয়েট এবং টীকাগুলি ট্যাগ উভয়ই এমন একটি ফাইল .git/refs/tagsযা একটি SHA-1 ধারণ করে

  • লাইটওয়েট ট্যাগগুলির জন্য, SHA-1 সরাসরি প্রতিশ্রুতিতে নির্দেশ করে:

    git tag light
    cat .git/refs/tags/light
    

    হেডের SHA-1 এর মতোই মুদ্রণ করে।

    সুতরাং আশ্চর্যের কিছু নেই যে তারা অন্য কোনও মেটাডেটা ধারণ করতে পারে না।

  • টীকাগুলি ট্যাগ অবজেক্ট ডাটাবেসের কোনও ট্যাগ অবজেক্টে নির্দেশ করে।

    git tag -as -m msg annot
    cat .git/refs/tags/annot
    

    টীকাযুক্ত ট্যাগ অবজেক্টের এসএএচএ রয়েছে:

    c1d7720e99f9dd1d1c8aee625fd6ce09b3a81fef
    

    এবং তারপরে আমরা এর সামগ্রীটি এর সাথে পেতে পারি:

    git cat-file -p c1d7720e99f9dd1d1c8aee625fd6ce09b3a81fef
    

    নমুনা আউটপুট:

    object 4284c41353e51a07e4ed4192ad2e9eaada9c059f
    type commit
    tag annot
    tagger Ciro Santilli <your@mail.com> 1411478848 +0200
    
    msg
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.11 (GNU/Linux)
    
    <YOUR PGP SIGNATURE>
    -----END PGP SIGNAT
    

    এবং এটিতে এটিতে অতিরিক্ত মেটাডেটা রয়েছে। আমরা আউটপুট থেকে দেখতে পাচ্ছি, মেটাডেটা ক্ষেত্রগুলি হ'ল:

    বিন্যাসটির আরও বিশদ বিশ্লেষণটি এখানে উপস্থিত রয়েছে: গিট ট্যাগ অবজেক্টের বিন্যাস কী এবং কীভাবে তার এসএএচএ গণনা করা যায়?

বোনাসেস

  • কোনও ট্যাগ টিকা দেওয়া আছে কিনা তা নির্ধারণ করুন:

    git cat-file -t tag
    

    আউটপুট

    • commit লাইটওয়েটের জন্য, যেহেতু কোনও ট্যাগ অবজেক্ট নেই, এটি সরাসরি কমিটিকে নির্দেশ করে
    • tag টীকাগুলির জন্য, যেহেতু সেই ক্ষেত্রে কোনও ট্যাগ অবজেক্ট রয়েছে
  • কেবলমাত্র লাইটওয়েট ট্যাগের তালিকা করুন: আমি কীভাবে সমস্ত লাইটওয়েট ট্যাগ তালিকা করতে পারি?


1
এটি বর্তমানে গৃহীত উত্তরের চেয়ে অনেক পরিষ্কার। ধন্যবাদ।
রিস করুন

43

বড় পার্থক্য পুরোপুরি ব্যাখ্যা করা হয় এখানে

মূলত, লাইটওয়েট ট্যাগগুলি নির্দিষ্ট কমিটের কেবলমাত্র পয়েন্টার। আর কোনও তথ্য সংরক্ষণ করা হয় না ; অন্য দিকে, সটীক ট্যাগ হয় নিয়মিত বস্তু , যা একটি লেখক এবং একটি তারিখ আছে এবং উল্লেখ করা যাবে না কারণ তারা তাদের নিজস্ব রয়েছে SHA কী রয়েছে।

যদি তা জানা কি যারা বাঁধা কি এবং যখন আপনার জন্য প্রাসঙ্গিক হয়, তাহলে সটীক ট্যাগ ব্যবহার। আপনি যদি কেবলমাত্র আপনার বিকাশের কোনও নির্দিষ্ট পয়েন্ট ট্যাগ করতে চান তবে কে এবং কখন এটি করেছে তা বিবেচনা না করেই হালকা ট্যাগ যথেষ্ট পরিমাণে ভাল।

সাধারণত আপনি টীকাগুলি ট্যাগ করতে যান, তবে এটি সত্যিই প্রকল্পের গিট মাস্টারের উপর নির্ভর করে।

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