গিট সংগ্রহস্থল থেকে সমস্ত ট্যাগ মুছুন


224

আমি গিট সংগ্রহস্থল থেকে সমস্ত ট্যাগ মুছতে চাই। আমি এটা কিভাবে করবো?

ব্যবহার git tag -d tagnameট্যাগটি মুছে tagnameস্থানীয়ভাবে এবং ব্যবহার git push --tagsআমি Git প্রদানকারীর উপর ট্যাগ আপডেট করুন।

আমি চেষ্টা করেছিলাম:

git tag -d *

তবে আমি দেখতে পাচ্ছি তার *অর্থ বর্তমান ডিরেক্টরি থেকে প্রাপ্ত ফাইলগুলি।

$ git tag -d *
error: tag 'file1' not found.
error: tag 'file2' not found.
...

আমার কাছে প্রচুর ট্যাগ রয়েছে তা বিবেচনা করুন এবং আমি সেগুলি সমস্ত মুছতে চাই।

উত্তর:


419
git tag | xargs git tag -d

লিনাক্স দর্শনের কেবল ব্যবহার করুন যেখানে আপনি সমস্ত কিছু পাইপ করেন। উইন্ডোজে একই কমান্ডের সাহায্যে গিট ব্যাশ ব্যবহার করুন।


136
ধন্যবাদ। এই কমান্ডটি স্থানীয় ট্যাগগুলি মুছে দেয়। আমি git tag -l | xargs -n 1 git push --delete originএগুলি দূর থেকে মুছে ফেলতাম।
আয়নিক বিজাউ

7
এবং উইন্ডোজে?
কোডম্যানএক্স

7
@ কোডেমানেক্স উইন্ডোজে আপনার একই কমান্ডের সাহায্যে গিট ব্যাশ ব্যবহার করা উচিত।
inf3rno

2
রিমোট ট্যাগ মুছে না, হাজার হাজার ট্যাগের জন্য খুব ধীর।
অ্যাড্রিয়ান বেকার

1
'xargs' উইন্ডোজ 10 এ অভ্যন্তরীণ বা বাহ্যিক কমান্ড হিসাবে স্বীকৃত নয়
গুলজার

206

দূরবর্তী ট্যাগগুলি মুছতে (স্থানীয় ট্যাগগুলি মুছার আগে) কেবল এটি করুন:

git tag -l | xargs -n 1 git push --delete origin

এবং তারপরে স্থানীয় কপিগুলি মুছুন:

git tag | xargs git tag -d

দূরবর্তী মোছা কয়েক ডজন ট্যাগের জন্য খুব ধীর।
ffxsam

5
আপনার কাছে প্রচুর রিমোট ট্যাগ থাকলে এই উত্তরটি দ্রুততর: stackoverflow.com/a/34395864/747044
অ্যাড্রিয়ান

এই উত্তরে কমান্ডের ক্রম ধরে নেওয়া হয়েছে যে কোনও স্থানীয়-কেবল ট্যাগ নেই।
একিউম্যানাস

এটি খুব ধীর, নীচের সমাধানটি আরও ভাল।
রুট ফুল

যদি আপনাকে কমিটের জন্য পাসফ্রেজ প্রবেশ করতে হয় তবে এটি প্রতিটি ট্যাগের জন্য পাসফ্রেজ প্রয়োজন। অন্য সমাধান আরও ভাল।
Kap

56

এক কমান্ডের সমস্ত ট্যাগ মুছে ফেলার জন্য এটি আরও কার্যকর হতে পারে। বিশেষত যদি আপনার কয়েকশ থাকে।

উপযুক্ত নন-উইন্ডোজ শেলটিতে, সমস্ত রিমোট ট্যাগ মুছুন:

git tag | xargs -L 1 | xargs git push origin --delete

তারপরে সমস্ত স্থানীয় ট্যাগ মুছুন:

git tag | xargs -L 1 | xargs git tag --delete

'আপনার ট্যাগের নাম না থাকলে এটি ঠিক হওয়া উচিত । তার জন্য, নিম্নলিখিত কমান্ডগুলি ঠিক আছে।

git tag | xargs -I{} echo '"{}"' | tr \\n \\0 | xargs --null git push origin --delete
git tag | xargs -I{} echo '"{}"' | tr \\n \\0 | xargs --null git tag --delete

রেখার তালিকা গ্রহণের অন্যান্য উপায়, এগুলি উদ্ধৃতিতে মোড়ানো, তাদের একটি একক লাইন তৈরি করে এবং সেই লাইনটি কমান্ডে পাস করার পরে সম্ভবত উপস্থিত রয়েছে। এটি বিবেচনা করা চূড়ান্ত বিড়াল চামড়া পরিবেশ এবং সব।


3
আমার বেশ কয়েক হাজার ট্যাগ ছিল, একটি রিমোট ক্লাউড রেপো থেকে একে একে মুছে ফেলতে অনেক দিন সময় লাগছিল, যা এটি সমাধান করেছে।
অ্যাড্রিয়ান বেকার

কি করে xargs -L 1?
ymett

-L সর্বাধিক লাইন - ম্যাক্স-লাইন [= সর্বাধিক লাইন] -l [সর্বাধিক লাইন] সর্বাধিক সর্বাধিক সর্বাধিক লাইনগুলি খালি ফাঁকা ইনপুট লাইন প্রতি কমান্ড লাইনে ব্যবহার করুন। '-L' এর জন্য, বাদ দেওয়া হলে সর্বাধিক-লাইনগুলি ডিফল্ট হয়। '-L' এর জন্য যুক্তিটি বাধ্যতামূলক। ফাঁকা ফাঁকা স্থানগুলি পরবর্তী ইনপুট লাইনে লাইনগুলি গণনা করার উদ্দেশ্যে একটি ইনপুট লাইনটি যৌক্তিকভাবে চালিয়ে যেতে পারে। '-X' বোঝায়। এই বিকল্পটির '-l' ফর্মটি POSIX- অনুবর্তী '-L' বিকল্পের পক্ষে অবহিত করা হয়। gnu.org/software/findutils/manual/html_node/find_html/…
রিচার্ড এ

@ রিচার্ডএক্যাডলিং ঠিক আছে, তবে উত্তরে এর কী প্রভাব আছে? git tagপ্রতি লাইনে একটি করে ট্যাগ দেয়, এবং তার পরে xargs -L 1প্রতি লাইনে একটি করে আউটপুট দেয়, তবে এটি কীসের জন্য?
ymett

হুম। সম্ভবত এই প্রসঙ্গে কিছুই! জিনিসগুলি একটি স্পর্শকে ধীর করে তোলা ছাড়া!
রিচার্ড একটি চতুর্থাংশ

24

উইন্ডোজ ব্যবহারকারীদের পাওয়ারশেল ব্যবহার করার জন্য:

git tag | foreach-object -process { git tag -d $_ }

প্রত্যাবর্তিত প্রতিটি লাইনের জন্য git tagএক্সিকিউট করে ফেরত সমস্ত ট্যাগ মুছে ফেলা হয় git tag -d


23

স্টেফানের উত্তরে যুক্ত করা যা দূরবর্তী থেকে ট্যাগগুলি কীভাবে মুছতে হবে তা অনুপস্থিত। উইন্ডোজ পাওয়ারশেলের জন্য আপনি প্রথমে স্থানীয় ট্যাগগুলির পরে দূরবর্তী ট্যাগগুলি মুছতে এটি চালাতে পারেন।

git tag | foreach-object -process { git push origin --delete $_ }
git tag | foreach-object -process { git tag -d $_ }  

19

যদি আপনার স্থানীয় রেপোতে ট্যাগ না থাকে তবে আপনি এটি স্থানীয় রেপোতে না নিয়ে দূরবর্তী ট্যাগগুলি মুছতে পারেন।

git ls-remote --tags --refs origin | cut -f2 | xargs git push origin --delete

আপনার দূরবর্তী হ্যান্ডলারের নামটিতে "উত্স" প্রতিস্থাপন করতে ভুলবেন না।


অসাধারণ! এটি একসাথে সমস্ত মুছে ফেলেছে। অন্য কমান্ডটি প্রতি 2 সেকেন্ডের মধ্যে একটি মুছে
ফেলছিল

11

উইন্ডোজ ব্যবহারকারীদের জন্য:

গিট ট্যাগ চালিয়ে এবং গিট ট্যাগ-ডি-তে সেই তালিকাটি খাওয়ানোর মাধ্যমে এটি সমস্ত স্থানীয় ট্যাগ মুছে দেয়:

FOR /f "tokens=*" %a in ('git tag') DO git tag -d %a

(পাওয়া গেছে: https://gist.github.com/RandomArray/fdaa427878952d9768b0 )



1

যেহেতু এই সমস্ত অপশনটি কেবল লিনাক্সে কাজ করে, তাই উইন্ডোগুলির সাথে কারওর জন্য এটি সমতুল্য:

FOR /F usebackq %t IN (`git tag`) DO @git tag --delete %t

1

আমি উপসর্গ সহ ট্যাগ মুছতে হবে

উদাহরণস্বরূপ, আমাকে v0.0.1, v0.0.2, v0.0.3, v0.0.4, v0.0.5 ট্যাগগুলি মুছতে হবে

git tag -d $(git tag -l "v0.0.*")

উপসর্গ সহ সমস্ত ট্যাগ তালিকাভুক্ত করা

git tag -l "v0.0.*"

ট্যাগ মুছতে

git tag -d $tag_names

প্রথম বিবৃতিটি এভাবেই কাজ করে


দ্রুত, সহজ এবং কার্যকর। কাজ করেছেন, ধন্যবাদ!
ভেদরান মান্ডিć

0

পাওয়ারসেল ভি 7 সমান্তরাল ফোরচকে সমর্থন করে যদি আপনার মুছতে হবে এমন প্রচুর আপস্ট্রিম (উত্স) ট্যাগ রয়েছে:

git tag | foreach-object -Parallel { 
git push origin --delete $_ 
git tag -d $_ 
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.