গিট ট্যাগ কী, ট্যাগগুলি কীভাবে তৈরি করবেন এবং গিট দূরবর্তী ট্যাগ কীভাবে চেকআউট করবেন


522

আমি যখন চেকআউট করি দূরবর্তী গিট ট্যাগ ব্যবহার করে কমান্ড:

git checkout -b local_branch_name origin/remote_tag_name

আমি এর মতো ত্রুটি পেয়েছি:

error: pathspec `origin/remote_tag_name` did not match any file(s) known to git.

আমি যখন গিট ট্যাগ কমান্ড ব্যবহার করি তখন আমি দূরবর্তী_ট্যাগ_নাম খুঁজে পেতে পারি।

উত্তর:


1152

গিটে একটি ট্যাগ কী তা ব্যাখ্যা করে শুরু করা যাক

এখানে চিত্র বর্ণনা লিখুন

ইতিহাসে একটি নির্দিষ্ট কমিট লেবেল করতে এবং চিহ্নিত করতে একটি ট্যাগ ব্যবহার করা হয় ।
এটি সাধারণত রিলিজ পয়েন্টগুলি চিহ্নিত করতে ব্যবহৃত হয় (উদাঃ v1.0 ইত্যাদি)।

যদিও কোনও ট্যাগ একটি শাখার মতো প্রদর্শিত হতে পারে , তবে একটি ট্যাগ পরিবর্তন হয় না । এটা পয়েন্ট সরাসরি একটি থেকে নির্দিষ্ট কমিট ইতিহাসে।

এখানে চিত্র বর্ণনা লিখুন


ট্যাগগুলি স্থানীয়ভাবে আপনার সংগ্রহস্থলটিতে না থাকলে আপনি চেকআউট করতে পারবেন না, fetchআপনার নিজের স্থানীয় সংগ্রহস্থলের ট্যাগগুলি রাখতে হবে।

প্রথমে নিশ্চিত হয়ে নিন যে ট্যাগটি স্থানীয়ভাবে স্থানীয়ভাবে উপস্থিত রয়েছে

# --all will fetch all the remotes.
# --tags will fetch all tags as well
$ git fetch --all --tags --prune

তারপরে দৌড়ে ট্যাগটি দেখুন

$ git checkout tags/<tag_name> -b <branch_name>

পরিবর্তে উপসর্গ originব্যবহার করুন tags/


এই নমুনায় আপনার কাছে দুটি ট্যাগ সংস্করণ 1.0 এবং সংস্করণ 1.1 রয়েছে আপনি নীচের যে কোনওটির সাথে সেগুলি পরীক্ষা করে দেখতে পারেন:

$ git checkout A  ...
$ git checkout version 1.0  ...
$ git checkout tags/version 1.0  ...

উপরের সমস্তগুলি একই কাজ করবে কারণ ট্যাগটি প্রদত্ত প্রতিশ্রুতিতে কেবলমাত্র পয়েন্টার।

এখানে চিত্র বর্ণনা লিখুন
উত্স: https://backlog.com/git-tutorial/img/post/stepup/capture_stepup4_1_1.png


সমস্ত ট্যাগের তালিকাটি কীভাবে দেখবেন?

# list all tags
$ git tag

# list all tags with given pattern ex: v-
$ git tag --list 'v-*'

ট্যাগগুলি কিভাবে তৈরি করবেন?

ট্যাগ তৈরির জন্য 2 টি উপায় রয়েছে:

# lightweight tag 
$ git tag 

# annotated tag
$ git tag -a

২ এর মধ্যে পার্থক্য হ'ল একটি টীকাযুক্ত ট্যাগ তৈরি করার সময় আপনি গিট কমিটের মতো মেটাডেটা যুক্ত করতে পারেন:
নাম, ই-মেইল, তারিখ, মন্তব্য এবং স্বাক্ষর

এখানে চিত্র বর্ণনা লিখুন

ট্যাগগুলি কীভাবে মুছবেন?

# delete any (local) given tag
$ git tag -d <tag name>

# Delete a tag from the server with push tags
$ git push --delete origin <tag name>

একটি নির্দিষ্ট ট্যাগ ক্লোন কিভাবে?

প্রদত্ত ট্যাগের সামগ্রীটি দখল করতে, আপনি checkoutকমান্ডটি ব্যবহার করতে পারেন । উপরে উল্লিখিত ট্যাগগুলি অন্য যে কোনও কমিটের মতো, তাই আমরা checkoutSHA-1 ব্যবহারের পরিবর্তে কেবল ট্যাগ_নামের পরিবর্তে এটি ব্যবহার করতে পারি

বিকল্প 1:

# Update the local git repo with the latest tags from all remotes
$ git fetch --all

# checkout the specific tag
$ git checkout tags/<tag> -b <branch>

বিকল্প 2:

ক্লোন কমান্ড ব্যবহার করে

যেহেতু গিট ক্লোন কমান্ডে যুক্ত করে অগভীর ক্লোন সমর্থন করে --branchআমরা শাখার নামের পরিবর্তে ট্যাগ নাম ব্যবহার করতে পারি। প্রদত্ত SHA-1 সম্পর্কিত প্রতিশ্রুতিতে কীভাবে "অনুবাদ" করতে হয় তা গিট জানে

# Clone a specific tag name using git clone 
$ git clone <url> --branch=<tag_name>

গিট ক্লোন - ব্র্যাঙ্ক =

--branch ফলস্বরূপ সংগ্রহস্থলের যে প্রতিশ্রুতিতে শিরোনামে ট্যাগ নিতে এবং হেডকে আলাদা করতে পারে।


ট্যাগ ঠেলে কিভাবে?

git push --tags

সমস্ত ট্যাগ পুশ করতে:

# Push all tags
$ git push --tags 

refs/tagsকেবলমাত্র নির্দিষ্ট করার পরিবর্তে ব্যবহার করা <tagname>

কেন? - এটি ব্যবহারের জন্য সুপারিশ করা হয়েছে refs/tagsযেহেতু কখনও কখনও ট্যাগগুলিতে আপনার শাখাগুলির মতো একই নাম থাকতে পারে এবং সাধারণ গিট পুশ ট্যাগের পরিবর্তে শাখাটি ধাক্কা দেয়

টীকাগুলি ট্যাগ এবং বর্তমান ইতিহাস চেইন ট্যাগগুলি ব্যবহার করতে টিপুন:

git push --follow-tags

এই পতাকা --follow-tagsউভয়ই কমিট এবং কেবল ট্যাগ যা উভয়কেই ঠেলে দেয় :

  • টীকাগুলি ট্যাগ (যাতে আপনি স্থানীয় / অস্থায়ী বিল্ড ট্যাগগুলি এড়িয়ে যেতে পারেন)
  • বর্তমান শাখাটি (ইতিহাসে অবস্থিত) থেকে পুনঃপদ্ধযোগ্য ট্যাগগুলি (পূর্বপুরুষ)

এখানে চিত্র বর্ণনা লিখুন

গিট ২.৪ থেকে আপনি এটি কনফিগারেশন ব্যবহার করে সেট করতে পারেন

$ git config --global push.followTags true

Cheatsheet: এখানে চিত্র বর্ণনা লিখুন



3
সুন্দর। git checkout A। কি A? আপনি কীভাবে তৈরি করেছেন A?
মধু

3
@ কোড উইজার্ড চমৎকার ফ্লো চার্ট! আপনি এটি তৈরি করতে কোন সফ্টওয়্যার ব্যবহার করেছেন?
জিওভান্নি লোভাটো

4
@ মধু Aএকটি প্রতিশ্রুতিবদ্ধ হ্যাশ
অ্যালেক্স বাকলানোভ

2
@ জিওভান্নি লোভাটো প্রবাহের চার্টটি তৃতীয় পক্ষের। চিত্রটির লিঙ্কটি হল ব্যাকলগ / গিট- টিউটোরিয়াল / আইএমজি / পোষ্ট / স্টেপআপ / যা এই পৃষ্ঠা থেকে ব্যাকলগ / গিট- টিউটোরিয়াল / স্টেপআপ / স্টেপআপ ৪_1 এইচটিএমএল ওয়েবসাইটটির গিট বিগনিয়ার গাইড ফর ডামিস নামে পরিচিত (ব্যাকলগ .com)।
জর্জ

2
এটি লক্ষণীয় যে git checkout tags/<tag_name> -b <branch_name>এটির দরকার নেই -b <branch_name>git checkout tags/<tag_name>আমাকে একটি বিচ্ছিন্ন মাথা দিয়েছে বিচ্ছিন্ন মাথা সম্পর্কে এই নিবন্ধ অনুসারে , আপনি একটি শাখা অস্থায়ীভাবে তৈরি এবং মুছে ফেলার মাধ্যমে একটি বিচ্ছিন্ন মাথা এড়ান। এটি বেশ ভিনগ্রহের কাজের প্রবাহ। স্পষ্টতই একজন গিট ব্যবহারকারী হিসাবে আমার মজাদার এবং লাভের জন্য শাখা তৈরি এবং মুছে ফেলার অভ্যাস করা দরকার।
icc97

194

(এই উত্তরটি লেখার জন্য কিছুটা সময় নিয়েছিল, এবং কোড উইজার্ডের উত্তর লক্ষ্য এবং মূলত সঠিক, তবে সম্পূর্ণরূপে সম্পূর্ণ নয়, তাই আমি এটি যাইহোক পোস্ট করব))


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

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

নির্দিষ্ট কমিটের নামগুলির জন্য সাধারণ ফর্ম - যা গিটকে রেফারেন্স কল করে — যে কোনও স্ট্রিং দিয়ে শুরু হয় refs/। একটি স্ট্রিং যা refs/heads/একটি শাখার নাম দিয়ে শুরু হয় ; একটি refs/remotes/রিমোট ট্র্যাকিং শাখার নাম দিয়ে শুরু একটি স্ট্রিং ; refs/tags/নামের সাথে একটি স্ট্রিং শুরু হয় ট্যাগ। নাম refs/stashহ'ল স্ট্যাশ রেফারেন্স (যেমন ব্যবহার করা git stash; ট্রেলিং স্ল্যাশের অভাব নোট করুন)।

কিছু অস্বাভাবিক বিশেষ-কেস নাম দিয়ে শুরু করো না আছে refs/: HEAD, ORIG_HEAD, MERGE_HEAD, এবং CHERRY_PICK_HEADবিশেষ করে সব নাম নির্দিষ্ট করে উল্লেখ করতে পারে (যদিও হয় HEADসাধারণত একটি শাখার নাম, অর্থাত, ধারণ করে রয়েছে )। তবে সাধারণভাবে, রেফারেন্স দিয়ে শুরু হয় ।ref: refs/heads/branchrefs/

এই বিষয়টিকে বিভ্রান্ত করার জন্য গিট একটি কাজ করে তা হ'ল এটি আপনাকে বাদ দিতে refs/এবং প্রায়শই শব্দটি পরে দেয় refs/। উদাহরণস্বরূপ, আপনি বাদ দিতে পারেন refs/heads/বা refs/tags/কোনও স্থানীয় শাখা বা ট্যাগ উল্লেখ করার সময় fact এবং স্থানীয় শাখাটি পরীক্ষা করার সময় আপনাকে অবশ্যই বাদ দিতে হবেrefs/heads/ ! ফলাফল যখনই দ্ব্যর্থহীন হয় আপনি এটি করতে পারেন, বা we যেমনটি আমরা উল্লেখ করেছি — যখন আপনাকে অবশ্যই এটি করতে হবে (জন্য )।git checkout branch

এটি সত্য যে রেফারেন্সগুলি কেবলমাত্র আপনার নিজস্ব সংগ্রহস্থলগুলিতেই নয়, দূরবর্তী সংগ্রহস্থলগুলিতেও রয়েছে। যাইহোক, গিট আপনাকে কেবল খুব নির্দিষ্ট সময়গুলিতে একটি দূরবর্তী সংগ্রহস্থলের রেফারেন্সগুলিতে অ্যাক্সেস দেয়: যথা, সময় fetchএবং pushক্রিয়াকলাপ। এছাড়াও আপনি ব্যবহার করতে পারেন git ls-remoteবা git remote showতাদের দেখতে, কিন্তু fetchএবং pushযোগাযোগের আরো আকর্ষণীয় পয়েন্ট।

Refspecs

সময় fetchএবং push, গীত স্ট্রিং ব্যবহার এটা আহ্বান refspecs স্থানীয় ও দূরবর্তী সংগ্রহস্থলের মধ্যে রেফারেন্স স্থানান্তর করতে। সুতরাং, এটি এই সময়ে এবং রেফস্প্যাকের মাধ্যমে, দুটি গিট সংগ্রহস্থল একে অপরের সাথে সিঙ্কে প্রবেশ করতে পারে। আপনার নামগুলি একবারে সিঙ্ক হয়ে গেলে আপনি একই নামটি ব্যবহার করতে পারেন যা প্রত্যন্ত ব্যবহার করে। fetchযদিও এখানে কিছু বিশেষ যাদু রয়েছে এবং এটি শাখার নাম এবং ট্যাগের নাম উভয়কেই প্রভাবিত করে।

git fetchআপনার গিটকে অন্য গিটকে কল করতে (বা সম্ভবত পাঠ্য বার্তা) নির্দেশ দেওয়ার কথা ভাবা উচিত - "রিমোট" "এবং এর সাথে কথোপকথন করতে হবে। এই কথোপকথনের শুরুর দিকে, রিমোটটি তার সমস্ত উল্লেখগুলি তালিকাভুক্ত করে: এর মধ্যে যে কোনও রেফারেন্স সহ refs/heads/সমস্ত কিছু এবং এর ভিতরে থাকা সমস্ত কিছুই refs/tags/। আপনার Git এই মাধ্যমে স্ক্যান এবং (চলিত এর উপর ভিত্তি করে refspec আনা) renames তাদের শাখা।

আসুন নামের রিমোটটির জন্য স্বাভাবিক রেস্পেককে একবার দেখে নেওয়া যাক origin:

$ git config --get-all remote.origin.fetch
+refs/heads/*:refs/remotes/origin/*
$ 

এই রেফস্পেকটি আপনার গিটকে প্রতিটি নাম মিলে refs/heads/*- রিমোটের প্রতিটি শাখা- refs/remotes/origin/*র সাথে মিলিয়ে তার নাম পরিবর্তন করে , অর্থাৎ, মিলে যাওয়া অংশটিকে একই রাখবেন, শাখার নামটি ( refs/heads/) একটি রিমোট-ট্র্যাকিং শাখার নামতে পরিবর্তন করুন ( refs/remotes/বিশেষত , refs/remotes/origin/)।

এটা এই refspec মাধ্যমে যে originএর শাখা দূরবর্তী জন্য আপনার রিমোটের-ট্র্যাকিং শাখা হয়ে origin। শাখার নাম এই ক্ষেত্রে origin, রিমোটের নাম সহ, রিমোট-ট্র্যাকিং শাখার নাম হয়ে যায় । +রেফস্পেকের সামনের প্লাস চিহ্নটি "ফোর্স" পতাকা সেট করে, অর্থাত আপনার রিমোট ট্র্যাকিং শাখাটি এটির সাথে মেলে তুলতে যা লাগে তা নির্বিশেষে দূরবর্তীটির শাখার নামটি মিলিয়ে আপডেট করা হবে। ( +শাখাগুলি ব্যতীত , শাখার আপডেটগুলি "দ্রুত ফরোয়ার্ড" পরিবর্তনের মধ্যে সীমাবদ্ধ থাকে এবং গিগ সংস্করণ ১.৮.২ বা তার পরে একইভাবে ট্যাগ আপডেটগুলি উপেক্ষা করা হয় then তারপরে একই দ্রুত-ফরওয়ার্ড বিধিগুলি প্রয়োগ করা হয়েছিল))

ট্যাগ

কিন্তু ট্যাগ সম্পর্কে কি? তাদের জন্য কোনও রেসপেক নেই - কমপক্ষে, ডিফল্টরূপে নয়। আপনি একটি সেট করতে পারেন, সেক্ষেত্রে রেফস্পেকের ফর্মটি আপনার উপর নির্ভর করে; অথবা আপনি চালাতে পারেন git fetch --tags। ব্যবহার --tagsযোগ করার প্রভাব রয়েছে refs/tags/*:refs/tags/*refspec অর্থাৎ, এটা সব ট্যাগ ওভার এনেছে ( কিন্তু আপডেট করা হয় না আপনার ট্যাগ যদি আপনি ইতিমধ্যে এই নামের একটি ট্যাগ আছে, কি রিমোটের ট্যাগ বলেছেন নির্বিশেষে সম্পাদনা, জানুয়ারি 2017: গীত 2.10 হিসাবে , পরীক্ষণ দেখায় যে --tagsরিমস্কেক পড়ার মতো জোর করে আপনার ট্যাগগুলি রিমোটের ট্যাগগুলি থেকে আপডেট করে +refs/tags/*:refs/tags/*; এটি গিটের পূর্ববর্তী সংস্করণ থেকে আচরণে পার্থক্য হতে পারে)।

নোট যে কোন এখানে পুনঃনামকরনের হয়: দূরবর্তী যদি originট্যাগ আছে xyzzy, এবং আপনি না, এবং আপনি git fetch origin "refs/tags/*:refs/tags/*", আপনি পেতে refs/tags/xyzzyআপনার সংগ্রহস্থলে জোড়া হয়েছে (প্রতি নির্দেশ একই দূরবর্তী হিসাবে কমিট)। আপনি যদি এটি ব্যবহার করেন +refs/tags/*:refs/tags/*তবে আপনার ট্যাগটি xyzzyযদি একটি থাকে তবে সেটির দ্বারা প্রতিস্থাপন করা হবে origin। এটি হ'ল +রেফস্পেকের বলের পতাকাটির অর্থ "আমার গিটারটি তাদের গিট থেকে যেটি পায় তার সাথে আমার রেফারেন্সের মানটি প্রতিস্থাপন করে"।

আনার সময় অটোম্যাটিক ট্যাগ

ঐতিহাসিক কারণে, 3 যদি আপনি তন্ন তন্ন ব্যবহার --tagsবিকল্প কিংবা --no-tagsবিকল্প, git fetchবিশেষ কর্ম লাগে। মনে রাখবেন যে আমরা উপরে বলেছি যে রিমোটটি আপনার স্থানীয় গিটকে তার সমস্ত রেফারেন্স প্রদর্শন করেই শুরু হয় , আপনার স্থানীয় গিট সেগুলি দেখতে চায় কি না। 4 আপনার গিট এই মুহুর্তে এটি দেখতে পাওয়া সমস্ত ট্যাগগুলির নোট নেয়। তারপরে, এটি যে কোনও প্রতিশ্রুতিবদ্ধ অবজেক্ট ডাউনলোড করতে শুরু করে, এটি যা কিছু আনতে হবে তা হ্যান্ডল করার জন্য প্রয়োজন, যদি এই কমিটগুলির মধ্যে একটিরও সেই ট্যাগগুলির মতো একই আইডি থাকে, গিট সেই ট্যাগটি যোগ করতে পারে those বা সেই ট্যাগগুলি, যদি একাধিক ট্যাগের সেই আইডি থাকে — আপনার ভাণ্ডার

সম্পাদনা করুন, জানুয়ারি 2017: শো যে গীত 2.10 মধ্যে আচরণ এখন পরীক্ষা: তাদের গীত নামে একটি ট্যাগ প্রদান করে টি , এবং আপনি নামে একটি ট্যাগ নেই টি , এবং কমিট সঙ্গে যুক্ত আইডি টি শাখা এক পূর্বপুরুষ যা আপনি git fetchপরীক্ষা করছেন, আপনার গিট আপনার ট্যাগগুলি সাথে বা তার বাইরে T যুক্ত করে --tags। যোগ করার --tagsফলে আপনার গিট তাদের সমস্ত ট্যাগ প্রাপ্ত করে এবং আপডেটও জোর করে।

শেষের সারি

আপনি git fetch --tagsতাদের ট্যাগ পেতে ব্যবহার করতে পারেন। তাদের আপনার বিদ্যমান ট্যাগ নামের সাথে ট্যাগ নাম সংঘাত, আপনি যদি পারে (Git সংস্করণটি উপর নির্ভর করে) এমনকি মুছে দিতে হবে (অথবা নামান্তর) আপনার ট্যাগের কিছু, এবং তারপর চালানো git fetch --tagsতাদের ট্যাগ পেতে। যেহেতু ট্যাগগুলি remote দূরবর্তী শাখাগুলির বিপরীতে automatic স্বয়ংক্রিয় নামকরণ হয় না, তাই আপনার ট্যাগের নামগুলি অবশ্যই তাদের ট্যাগের সাথে মিলে যায়, এজন্য আপনার দ্বন্দ্বের সমস্যা থাকতে পারে।

ইন সবচেয়ে স্বাভাবিক ক্ষেত্রে, যদিও, একটি সহজ git fetchকাজ হবে, তাদের করে এবং তাদের ম্যাচিং ট্যাগ ওভার আনয়ন এবং যেহেতু তারা-কেবা তারা-হবে করে সময় তারা করে প্রকাশ এ ট্যাগ, আপনি তাদের ট্যাগ সঙ্গে যোগাযোগ রাখা হবে। আপনি যদি নিজের নিজস্ব ট্যাগ না তৈরি করেন না বা তাদের সংগ্রহশালা এবং অন্যান্য সংগ্রহশালাগুলি (একাধিক রিমোটের মাধ্যমে) মিশ্রণ করেন তবে আপনার কোনও ট্যাগের নাম সংঘর্ষ হবে না, তাই আপনাকে ট্যাগ মুছে ফেলা বা নাম পরিবর্তন করে গোলমাল করতে হবে না তাদের ট্যাগ প্রাপ্ত।

আপনার যখন উপযুক্ত নাম প্রয়োজন

আমি পূর্বেই উল্লেখ করা যে আপনার বর্জন করতে refs/প্রায় সবসময়, এবং refs/heads/এবং refs/tags/এবং তাই অধিকাংশ সময় হয়েছে। কিন্তু কখন পারবে না ?

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

git rev-parse xyzzy

আপনি যে আইডি ট্যাগ পয়েন্ট। তবে — এবং এটি যা থেকে নিখোঁজ রয়েছে gitrevisions- git checkoutশাখার নাম পছন্দ করে, তাই git checkout xyzzyআপনাকে ট্যাগ উপেক্ষা করে শাখায় বসিয়ে দেবে।

অস্পষ্টতার ক্ষেত্রে, আপনি প্রায় সর্বদা পুরো নামটি ব্যবহার করে রেফ নামটি বানান করতে পারেন refs/heads/xyzzyবা refs/tags/xyzzy। (নোট যে এই করে দিয়ে কাজ git checkout, কিন্তু একটি সম্ভবত অপ্রত্যাশিত পদ্ধতিতে: git checkout refs/heads/xyzzyএকটি শাখা চেকআউট বদলে একটি বিচ্ছিন্ন-হেড চেকআউট ঘটায় এই জন্যই আপনি শুধু মনে রাখবেন যে করতে হবে। git checkoutপ্রথমে একটি শাখা নামের সংক্ষিপ্ত নাম ব্যবহার করবে: এভাবেই আপনি xyzzyট্যাগটি xyzzyউপস্থিত থাকলেও শাখাটি পরীক্ষা করে দেখুন the আপনি যদি ট্যাগটি দেখতে চান তবে আপনি ব্যবহার করতে পারেন refs/tags/xyzzy))

কারণ ( gitrevisionsনোট হিসাবে ) গিট চেষ্টা করবে , আপনি কমিট ট্যাগটি সনাক্ত করতে কেবল লিখতেও পারেন । (কেউ নামে একটি বৈধ রেফারেন্স লিখতে পরিচালিত করে থাকে তাহলে মধ্যে যাইহোক, এই যেমন সমাধান হবে । কিন্তু স্বাভাবিকভাবে শুধুমাত্র বিভিন্ন নাম থাকা উচিত ।)refs/nametags/xyzzyxyzzyxyzzy$GIT_DIR$GIT_DIR/xyzzy*HEAD$GIT_DIR


1 ঠিক আছে, ঠিক আছে, " কেবলমাত্র পেডেন্টিক হওয়ার জন্য নয় "। :-)

2 কেউ কেউ "খুব সহায়ক নয়" বলতেন এবং আমি আসলে তাতে সম্মত হতে চাইতাম।

3 মূলত, git fetchএবং রিমোটস এবং রেসপেস্কগুলির সম্পূর্ণ ধারণাটি গিটের সাথে সামান্য কিছুটা দেরী সংযোজন ছিল, এটি গিট 1.5 এর সময়কালের মধ্যে ঘটেছিল। তার আগে এখানে কয়েকটি অ্যাড-হক বিশেষ কেস ছিল এবং ট্যাগ-আনার মধ্যে একটি ছিল, সুতরাং এটি বিশেষ কোডের মাধ্যমে দাদাদের কাছে পেয়েছিল।

4 যদি সাহায্য করে, হিসেবে দূরবর্তী গীত মনে Flasher অপভাষা অর্থ।


দুর্দান্ত লেখার। একটি ক্ষুদ্র নাইট: git fetchকেবল চাপ দেওয়া হলে দূরবর্তীগুলির ট্যাগগুলি আনবে --tags
cweekly

@cweekly: আচরণকে --tags, --no-tagsএবং ডিফল্ট আসলে বেশ চতুর হয়। ডিফল্টটি হ'ল যে ট্যাগগুলি আপনি আনেন সেই কমিটগুলিতে নেই যা আপনি আনেন ( --না-ট্যাগস হ্যান্ডলিং কোডটি আবারও সংশোধিত হয়েছে, এটি সম্ভবত আরও বিশেষ কোণার ক্ষেত্রে পরিচালিত করবে।
টেরিক

1

গিট ট্যাগ চেকআউট করার জন্য, আপনি নিম্নলিখিত কমান্ডটি প্রয়োগ করবেন

git checkout tags/tag-name -b branch-name

যেমন নিচে উল্লিখিত

 git checkout tags/v1.0 -b v1.0-branch

সমস্ত ট্যাগ আনার জন্য কমান্ডটি ব্যবহার করুন

git fetch --all --tags

0

নির্দিষ্ট ট্যাগ কোড পেতে একটি নতুন শাখা তৈরি করার চেষ্টা করুন এতে ট্যাগ কোডটি যুক্ত করুন। আমি আদেশ দ্বারা এটি সম্পন্ন করেছি:$git checkout -b newBranchName tagName

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