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


3413

ইতিমধ্যে ঠেলাঠেলি করা গিট ট্যাগটি আপনি কীভাবে মুছবেন?

উত্তর:


5742

রিমোট ট্যাগের নামের জন্য আপনাকে কেবল 'খালি' রেফারেন্সটি চাপতে হবে:

git push origin :tagname

অথবা, আরও স্পষ্টভাবে, --deleteবিকল্পটি ব্যবহার করুন (বা -dযদি আপনার গিট সংস্করণটি 1.8.0 এর চেয়ে পুরানো হয়):

git push --delete origin tagname

নোট করুন যে গিটটিতে ট্যাগের নেমস্পেস এবং শাখার নেমস্পেস রয়েছে তাই আপনি একটি শাখার জন্য এবং ট্যাগের জন্য একই নামটি ব্যবহার করতে পারেন। আপনি যদি তা নিশ্চিত করতে চান যে আপনি ট্যাগের পরিবর্তে দুর্ঘটনাক্রমে শাখাটি মুছে ফেলতে পারবেন না, আপনি সম্পূর্ণ রেফ নির্দিষ্ট করতে পারবেন যা কোনও শাখা কখনই মুছবে না:

git push origin :refs/tags/tagname

আপনার যদি স্থানীয় ট্যাগ মুছতে হয় তবে ব্যবহার করুন:

git tag --delete tagname

পটভূমি

কোনও শাখা, ট্যাগ বা অন্য রেফিটিকে দূরবর্তী সংগ্রহস্থলে পুশ করাতে "কোন রেপো, কোন উত্স, কোন গন্তব্য" নির্দিষ্ট করা জড়িত?

git push remote-repo source-ref:destination-ref

একটি আসল বিশ্বের উদাহরণ যেখানে আপনি নিজের মাস্টার শাখাটিকে উত্সের মাস্টার শাখায় ঠেলাচ্ছেন:

git push origin refs/heads/master:refs/heads/master

ডিফল্ট পাথগুলির কারণে যা সংক্ষিপ্ত করা যেতে পারে:

git push origin master:master

ট্যাগগুলি একইভাবে কাজ করে:

git push origin refs/tags/release-1.0:refs/tags/release-1.0

যা সংক্ষিপ্ত করা যেতে পারে:

git push origin release-1.0:release-1.0

উত্স রেফ (কোলনের আগের অংশ) বাদ দিয়ে আপনি দূরবর্তী প্রান্তে রেফটি মুছে ফেলে গন্তব্যে 'কিছুই না' চাপ দিন।


187
প্রশ্নের উত্তর দেওয়ার জন্য এবং সাধারণ ক্ষেত্রে ব্যাখ্যা করার জন্য এবং আনবিদ্রিত সিনট্যাক্সটির অর্থ বিশদ দেওয়ার জন্য +1
পিটার হোস্ট

77
এবং কেবলমাত্র যদি কেউ একবারে একাধিক ট্যাগ মুছে ফেলতে পারে তা অবাক করে দেখলে আপনি সাদা স্থান ব্যবহার করে এগুলি সহজ তালিকাতে তালিকাভুক্ত করেন git push --delete origin tag1 tag2। স্থানীয় ট্যাগ মুছে ফেলার জন্য একই বৈধgit tag -d tag1 tag2
ডিভ্যাফিকেশন

8
যদি ট্যাগের নামটি কোনও শাখার নামের সাথে সংঘর্ষ হয় তবে আপনি নিজের শাখাটি মোছার সাথে শেষ করতে পারেন। হা হা। দ্বিতীয় উত্তরটি দেখুন - এটি আরও পরিবেশগত
zuba

1
@ এম্মাহেএ কেবলমাত্র একটি অঙ্গীকারের tagসাথে সংযুক্ত। যে কারণে শাখার নাম অপ্রাসঙ্গিক।
সিবি 2

1
এটি জেনে রাখাও আকর্ষণীয় যে git tag -d `git tag`এটি সমস্ত স্থানীয় ট্যাগ মুছে ফেলবে। git push --delete origin `git tag`আপনি স্থানীয়ভাবে দূরবর্তী ট্যাগগুলি টানছেন এমনটি ধরে নিয়ে একই প্রয়োগ হয় । এটি একটি পরীক্ষার পরিবেশে সহজ ছিল।
ডার্কফ্রান্সএক্স

382

আরও সোজা উপায় way

git push --delete origin YOUR_TAG_NAME

আইএমও প্রিফিক্সিং কোলন সিনট্যাক্স এই পরিস্থিতিতে কিছুটা বিজোড়


4
আমি মনে করি এটি সঠিক উপায় ... অন্যান্য বাক্য গঠন আমার কাছে হ্যাকের মতো লাগে।
লুইজি আর ভিগিজিয়ানো

11
হ্যাঁ, এটি সহজ এবং কাজ করে। যদিও আমি ভেরিয়েবল অংশটি নির্দিষ্ট করে উত্তরটি পরিষ্কার করতে চাই: git push --delete origin "TAGNAME"যেখানে TAGNAME মূল ট্যাগটির নাম।
টিমু লেইস্তি

12
এইটা কাজ করে. একটি সংযোজন: আপনার যদি একটি শাখা এবং একই নামের একটি ট্যাগ থাকে তবে আপনি শাখাটি নয়, আপনি tagট্যাগটি পেয়েছেন তা নিশ্চিত করার জন্য আপনার ট্যাগের নামের আগে শব্দটি রাখতে পারেন।
অ্যান্ডিপ্যাক্সো

9
@andypaxo কি কমান্ড লাগে refspecs হয়, সঠিক পথ সঙ্গে ট্যাগ prefixing হবে refs/tags/, এরকম: refs/tags/v2.3.1
p3lim

আমার কোনওরকম দূরবর্তী সার্ভারে 'খারাপ' ট্যাগ নাম তৈরি হয়েছিল, যার বিশেষ অক্ষর ছিল, তাই আমি এটির সাথে সিঙ্ক করতে পারি না, তাই কেবল আপনার পরামর্শ অনুসারে এটি সরিয়ে ফেলেছি: গিট পুশ - ডিলেট অরিজিন "পরিষেবা - <ডিফল্ট> - 151 ", এটি ইন্টেলিজ দিয়ে নয়, স্ট্যাশ দিয়ে নয়, সোর্স ট্রি দ্বারা নয় এটি মুছে ফেলতে পারে না। ধন্যবাদ!
দিমিত্রি আলগাজিন

215

যদি v0.1.0মুছতে আপনার কাছে কোনও দূরবর্তী ট্যাগ থাকে এবং আপনার রিমোটটি থাকে originতবে কেবল:

git push origin :refs/tags/v0.1.0

আপনার যদি স্থানীয়ভাবে ট্যাগটি মুছতে হয় তবে:

git tag -d v0.1.0

মুছে ফেলার জন্য গিটের অস্বাভাবিক সিনট্যাক্সের ব্যাখ্যার জন্য অ্যাডাম ফ্রাঙ্কোর উত্তর দেখুন :


2
এটি jgit নিয়েও কাজ করে। ট্যাগ: ট্যাগ শর্টহ্যান্ড jgit
রিনপ

আমি পেয়েছি fatal: remote part of refspec is not a valid name in :/refs/tags/0.0.1...?
চেইম এলিয়াহ

3
@ চ্যাম ইলিয়া আপনার একটি শীর্ষস্থানীয় স্ল্যাশ রয়েছে, সম্ভবত এটিই আপনার সমস্যা
জোফ্রে

5
আরও ভাল উত্তর, এটির যেমন কাজ করে তবে আপনার যদি একটি শাখা এবং ট্যাগ রয়েছে যা একই।
এরিক এ। ব্র্যান্ডস্টাডমোইন

:tagnameদূরবর্তী মুছে ফেলার জন্য কেবল কাজ করা উচিত।
একিউম্যানাস

106

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

git tag -l | xargs git tag -d
git fetch

সমস্ত দূরবর্তী ট্যাগ সরান

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

স্থানীয় ট্যাগগুলি পরিষ্কার করুন

git tag -l | xargs git tag -d

2
কীভাবে স্থানীয় এবং দূরবর্তী স্টোর থেকে সমস্ত ট্যাগ সরিয়ে ফেলা যায়। এই আমি খুঁজছিলাম, ধন্যবাদ!
জর্জি অর্পিনেল

গিট আনুন, রিমোট মুছুন এবং তারপরে স্থানীয়দের পরিষ্কার করুন, সুন্দরভাবে কাজ করলেন!
ডিয়েগোআরাকেরো

ধীর, তবে সবচেয়ে সোজা
লুসেনট ফক্স

33

দূরবর্তী সংগ্রহস্থল থেকে ট্যাগটি সরাতে:

git push --delete origin TAGNAME

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

git tag -d TAGNAME

সুতরাং উভয়ই করতে একটি লাইন:git push --delete origin TAGNAME && git tag -d TAGNAME
সাকুরশিংকেন

25

আপনার টার্মিনাল থেকে, এটি করুন:

git fetch
git tags
git tag -d {tag-name}
git push origin :refs/tags/{tag-name}

এখন গিথুব ডট কম এ গিয়ে রিফ্রেশ করুন, তারা অদৃশ্য হয়ে যায়।


3
গিট ট্যাগ ট্যাগ নেই
ডিএসএফ

23
git tag -d your_tag_name
git push origin :refs/tags/your_tag_name
  1. প্রথম রেখা, স্থানীয় রেপো your_tag_nameথেকে মুছে ফেলা ।
  2. দ্বিতীয় লাইন, দূরবর্তী রেপো your_tag_nameথেকে মুছে ফেলা হয় ।
  3. আপনার গিটহাব রিলিজ বিভাগে বাতিল করা খসড়া বোতাম টিপুন ।

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


2
যদিও এই আদেশটি প্রশ্নের উত্তর দিতে পারে, কেন এবং / অথবা এই কোডটির প্রশ্নের উত্তর কীভাবে তার দীর্ঘমেয়াদী মানকে উন্নত করে তা সম্পর্কিত অতিরিক্ত প্রসঙ্গ সরবরাহ করে। কীভাবে উত্তর দিন
পোপো

20

স্থানীয় ট্যাগ '12345' মুছুন

git tag -d 12345

রিমোট ট্যাগ '12345' মুছুন (যেমন; গিটহাব সংস্করণও)

git push origin :refs/tags/12345

বিকল্প পথ বা পন্থা

git push --delete origin tagName
git tag -d tagName

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


15

কেবলমাত্র লক্ষ্য করুন, আপনার যদি দূরবর্তী ট্যাগ হিসাবে একটি প্রত্যন্ত শাখা থাকে, তবে এই আদেশগুলি অস্পষ্ট:

git push origin :tagname
git push --delete origin tagname

সুতরাং ট্যাগ মুছতে আপনাকে অবশ্যই এই আদেশটি ব্যবহার করতে হবে:

git push origin :refs/tags/<tag>

এবং এই শাখাটি মোছার জন্য:

git push origin :refs/heads/<branch>

যদি তা না হয় তবে আপনি এটির মতো একটি ত্রুটি পাবেন:

error: dst refspec <tagname> matches more than one.
error: failed to push some refs to '<repo>'

সংক্ষিপ্ত এবং সংক্ষিপ্ত। আমাদের সমস্যা কেন হচ্ছিল তার উত্তর হিসাবে মেগানঝোর পপ আউট সহ এই পোস্টটি, শাখার নাম এবং ট্যাগ নামটি অভিন্ন ছিল। আমি লোকাল ট্যাগ মুছে ফেলেছি এবং এতে চাপিয়েছি: রেফ / ট্যাগ এবং সমস্ত কিছু ভাল ছিল।
rwheadon

12

কয়েক হাজার দূরবর্তী ট্যাগগুলির জন্য 100x পর্যন্ত দ্রুত পদ্ধতি

11,000 টিরও বেশি ট্যাগ মোছার প্রয়োজনে এই উত্তরগুলি পড়ার পরে আমি এই পদ্ধতিগুলি নির্ভর করে বা শিখেছি xargs অনেক বেশি সময় নেয়, যদি না আপনার জ্বলতে সময় না থাকে।

সংগ্রাম, আমি দুটি আরও দ্রুত উপায় খুঁজে পেয়েছি । উভয়ের জন্যই আপনি যে ট্যাগগুলিকে রিমোটে মুছতে চান তা দিয়ে শুরু করুন git tagবা git ls-remote --tagsতৈরি করুন। নীচের উদাহরণগুলিতে আপনি যে sorting_proccessing_etcকোনও grepআইএন, sortআইএন, tailআইএন বা headআইএনএস ( যেমন grep -P "my_regex" | sort | head -n -200 ইত্যাদি ) দিয়ে বাদ দিতে বা প্রতিস্থাপন করতে পারেন :


এই প্রথম পদ্ধতিটি এখন পর্যন্ত দ্রুততম, সম্ভবত ব্যবহারের চেয়ে 20 থেকে 100 গুণ বেশি দ্রুত xargsএবং এক সাথে কমপক্ষে কয়েক হাজার ট্যাগ দিয়ে কাজ করে ।

git push origin $(< git tag | sorting_processing_etc \
| sed -e 's/^/:/' | paste -sd " ") #note exclude "<" for zsh

কিভাবে কাজ করে? ট্যাগগুলির সাধারণ, লাইন-বিভক্ত তালিকাকে স্পেস-বিভাজিত ট্যাগগুলির একক লাইনে রূপান্তর করা হয়, প্রতিটি এটির সাহায্যে চাপানো হয় :। । ।

tag1   becomes
tag2   ======>  :tag1 :tag2 :tag3
tag3

git pushএই ফর্ম্যাট ট্যাগটি ব্যবহার করে প্রতিটি দূরবর্তী রেফারেন্সকে কিছুই মুছে দেয় না , এটি মোছা হয় (এই ভাবে এগিয়ে দেওয়ার জন্য সাধারণ বিন্যাসটি local_ref_path:remote_ref_path)।

এই দুটি পৃষ্ঠার পৃথক উত্তর হিসাবে পৃথক পৃথক পৃথক পৃথক পৃথক পৃথক পৃথক পৃথক উত্তর হিসাবে where


এই উভয় পদ্ধতির পরে, আপনি সম্ভবত আপনার স্থানীয় ট্যাগগুলি মুছতে চাইবেন। এটি অনেক দ্রুততর তাই আমরা ব্যবহার করতে ফিরে যেতে পারি xargsএবং git tag -dযা যথেষ্ট।

git tag | sorting_processing_etc | xargs -L 1 git tag -d

বা রিমোট মুছার মতো:

git tag -d $(< git tag | sorting_processing_etc | paste -sd " ")

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

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

দুঃখিত, আমি কেবল বোঝাতে চেয়েছি আপনি দূরবর্তী ট্যাগগুলি মুছতে যা করছেন, স্থানীয় ট্যাগগুলি মুছে ফেলার সাথে কাজ করে, পুরো তালিকা একবারে সরবরাহ করে। :) গিট পুশ উত্সের পরিবর্তে: ট্যাগ1: ট্যাগ 2 ইত্যাদি আপনি গিট ট্যাগটি করতে চান - ট্যাগ1 ট্যাগ 2 ট্যাগ3 ডিলিট করুন আপনি সম্পূর্ণ ক্লিনআপ করতে পারেন। আবার, একটি টন ধন্যবাদ!
কিউবানেক্স

11

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

  1. সোর্সট্রি এ আপনার সংগ্রহশালা খুলুন
  2. বামদিকে "ট্যাগ" ট্যাবটি নির্বাচন করুন এবং প্রসারিত করুন
  3. আপনি যে ট্যাগটি মুছতে চান তাতে ডান ক্লিক করুন
  4. "YOUR_TAG_NAME মুছুন" নির্বাচন করুন
  5. যাচাইকরণ উইন্ডোতে, "দূরবর্তী থেকে ট্যাগ সরান" নির্বাচন করুন

YOUR_TAG_NAME এখন আপনার স্থানীয় সংগ্রহস্থল এবং সমস্ত রিমোটগুলি থেকে সরানো হবে - এটি গিটহাব, বিটবাকেট, বা অন্য যে কোনও জায়গায় আপনি সেই সংগ্রহস্থলের জন্য রিমোট হিসাবে তালিকাভুক্ত হয়েছেন।

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


একটি যাদুমন্ত্র মত কাজ করে. ধন্যবাদ!
নেটিভ_মোবাইল_আর্চ_দেব

9

আপনি যদি release01গিট সংগ্রহস্থল নামে একটি ট্যাগ তৈরি করে থাকেন তবে নিম্নলিখিতটি করে আপনি এটি আপনার সংগ্রহশালা থেকে সরিয়ে ফেলবেন:

git tag -d release01 
git push origin :refs/tags/release01 

একটি মার্চুরিয়াল সংগ্রহস্থল থেকে একটি অপসারণ করতে:

hg tag --remove featurefoo

দয়া করে https://confluence.atlassian.com / পৃষ্ঠাগুলি / মতামত.অ্যাকশন? পৃষ্ঠা Id= 282175551


7

আপনি যদি পাওয়ারশেল ব্যবহার করছেন এবং আপনি সেগুলির একটি গোছা মুছতে চান:

# Local tags:
git tag -l | foreach { git tag -d $_ }

# Remote tags:
git tag -l | foreach { git push --delete origin $_ }

অবশ্যই, মুছে ফেলার আগে আপনি এগুলি ফিল্টারও করতে পারেন:

git tag -l | Where-Object { $_ -like "build-*" } | foreach { git tag -d $_ }

এটি ছিল মসৃণ এবং ভাল রেজিপ্স্প উদাহরণ। ধন্যবাদ ভাল স্যার
ইউনূস

7

@ কিউব্যাকএক্সের পরামর্শ অনুসারে, আমি এই উত্তরটি আমার মূল থেকে বিভক্ত করেছি:

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

git tag | sorting_processing_etc | parallel --jobs 2 curl -i -X DELETE \ 
https://api.github.com/repos/My_Account/my_repo/git/refs/tags/{} -H 
\"authorization: token GIT_OAUTH_OR_PERSONAL_KEY_HERE\"  \
-H \"cache-control: no-cache\"`

parallelঅনেকগুলি অপারেটিং মোড রয়েছে, তবে সাধারণত প্রক্রিয়া সংখ্যার উপর সীমা নির্ধারণের সময় আপনি যে কোনও কমান্ড দেন তা সমান্তরাল করে তোলে। --jobs 2দ্রুত অপারেশন করার জন্য আপনি প্যারামিটারটি পরিবর্তন করতে পারেন , তবে গিথুবের রেট সীমাতে আমার সমস্যা ছিল যা বর্তমানে 5000 / ঘন্টা, তবে এটিও একটি অনিবন্ধিত স্বল্প-মেয়াদী সীমা রয়েছে বলে মনে হয়।


এর পরে, আপনি সম্ভবত আপনার স্থানীয় ট্যাগগুলিও মুছতে চাইবেন। এটি অনেক দ্রুততর তাই আমরা ব্যবহার করতে ফিরে যেতে পারি xargsএবং git tag -dযা যথেষ্ট।

git tag | sorting_processing_etc | xargs -L 1 git tag -d

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

2
আপনার যদি কয়েক হাজার ট্যাগ মুছতে হয়, তবে গতি 10-100 গুণ বেশি দ্রুত হবে
টনিএইচ

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

আমি মনে করি না এটি বিদ্যমান আছে। আমি নিজের উত্তর দেওয়ার জন্য এটি তৈরি করতে পারি। আপনি কি এটি উপযুক্ত মনে করতে চান?
টনিএইচ

1
আমি করি! আমি মনে করি এটি আসলে এখানে মোটামুটি সাধারণ অভ্যাস।
দ্য উথারসাইড

6

অন্যান্য উত্তরগুলি কীভাবে এটি সম্পাদন করতে পারে তা নির্দেশ করে, তবে আপনার পরিণতিগুলি মনে রাখা উচিত কারণ এটি একটি দূরবর্তী সংগ্রহস্থল।

রিট্যাগিং বিভাগে গিট ট্যাগ ম্যান পৃষ্ঠাতে, দূরবর্তী রেপোটির অন্যান্য ব্যবহারকারীদের কীভাবে সৌজন্যতার সাথে পরিবর্তনের বিষয়ে অবহিত করা যায় তার একটি ভাল ব্যাখ্যা রয়েছে। এমনকি অন্যদের কীভাবে আপনার পরিবর্তন করা উচিত তা যোগাযোগের জন্য তারা একটি কার্যকর ঘোষণার টেম্পলেট দেয়।


6

আমি একটি প্যাটার্নের সাথে মেলে এমনগুলি ব্যতীত সমস্ত ট্যাগ সরিয়ে ফেলতে চেয়েছিলাম যাতে আমি কয়েক মাসের প্রোডাকশন ট্যাগ ব্যতীত সমস্ত মুছতে পারি, আমি এখানে দুর্দান্ত সাফল্য ব্যবহার করেছি:

সমস্ত দূরবর্তী ট্যাগ মুছুন এবং মোছা থেকে এক্সপ্রেশন বাদ দিন

git tag -l | grep -P '^(?!Production-2017-0[89])' | xargs -n 1 git push --delete origin

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

git tag -l | grep -P '^(?!Production-2017-0[89])' | xargs git tag -d

5

স্থানীয় এবং মূল উভয় অবস্থান থেকে প্রদত্ত ট্যাগ সরানোর জন্য সরল স্ক্রিপ্ট। ট্যাগটি সত্যই উপস্থিত রয়েছে কিনা তা দিয়ে।

if [ $(git tag -l "$1") ]; then
    git tag --delete  $1
    git push --delete origin $1

    echo done.
else
    echo tag named "$1" was not found
fi

ব্যবহারবিধি:

  • শেল স্ক্রিপ্ট ফাইল তৈরি করুন (উদাহরণস্বরূপ git-tag-purge.sh) এবং কন্টেন্ট আটকান।
  • আপনার স্ক্রিপ্ট ফাইলটিকে এক্সিকিউটেবল করার জন্য chmod করুন।
  • স্ক্রিপ্টটি বিশ্বব্যাপী উপলভ্য করুন
  • আপনার গিট প্রকল্পে সিডি
  • কল স্ক্রিপ্ট (যেমন
    ।> git-tag-purge.sh ট্যাগ_নাম
    )

4

xargsইতিমধ্যে কিছু করার জন্য অনেক কাজ মনে হচ্ছে । এই থ্রেডটির পিছনে ফিরে তাকানো, আমি অনুভব করছি xargsযে আপনি যে স্বচ্ছন্দতার সাথে অভিজ্ঞতা করেছেন তা হ'ল কারণ যখন আসল উত্তরটি xargs -n 1সত্যই প্রয়োজন ছিল না তখন এটি ব্যবহৃত হয়েছিল।

এটি xargsস্বয়ংক্রিয়ভাবে সর্বাধিক কমান্ড লাইনের দৈর্ঘ্যের সাথে ডিল করা বাদে এটি আপনার পদ্ধতির সমান:

git tag | sorting_processing_etc | xargs git push --delete origin

xargsসমান্তরালে খুব প্রক্রিয়া চালাতে পারেন। পদ্ধতি 2 এর সাথে xargs:

git tag | sorting_processing_etc | xargs -P 5 -n 100 git push --delete origin

উপরোক্ত প্রতিটি প্রক্রিয়াতে সর্বোচ্চ 100 টি আর্গুমেন্ট পরিচালনা করতে সর্বোচ্চ 5 টি প্রক্রিয়া ব্যবহার করে uses আপনার প্রয়োজনের জন্য সবচেয়ে ভাল কাজ করে তা খুঁজে পেতে আপনি যুক্তি দিয়ে পরীক্ষা করতে পারেন।


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

4

আপনি যদি # টি অক্ষর দিয়ে শুরু করে একটি ট্যাগ তৈরি করেন , যেমন #ST002, আপনি দেখতে পাবেন যে আপনি সাধারণ নিদর্শনগুলি ব্যবহার করে মুছতে অক্ষম। অর্থাত

git tag -d #STOO2

ট্যাগ মুছে যাবে না, কিন্তু একটি এটা মোড়কে স্ট্রিং আক্ষরিক তাই মত

git tag -d "#ST002" or git tag -d '#ST002'

এটি মুছে ফেলা হবে। এটির প্রত্যাশা এমন কারও পক্ষে সহায়তা করবে যা ট্যাগ নাম লিখতে # ব্যবহার করে ভুল করেছে ।


2

রিমোটের সাথে গোলযোগ না করে স্থানীয়ভাবে এটি পরীক্ষার জন্য এখানে একটি স্থানীয় টেস্টকেস রয়েছে:

~/p $ mkdir gittest    
~/p/git $ cd gittest/
~/p/gittest $ git init
Initialized empty Git repository in /Users/local_user/p/gittest/.git/
 ~/p/gittest $ touch testfile.txt
 ~/p/gittest $ git add testfile.txt
 ~/p/gittest $ git commit -m "initial commit"
[master (root-commit) 912ce0e] initial commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 testfile.txt
 ~/p/gittest $ git tag
 ~/p/gittest $ git tag -a testtag
 ~/p/gittest $ git tag
testtag
 ~/p/gittest $ git show-ref
912ce0e40635c90241fdab756dce7ea34938de57 refs/heads/master
b0a6c15cabb990e6d6c46f762891b63608d962f3 refs/tags/testtag
 ~/p/gittest $ cd ..
 ~/p $ mkdir gitbare
 ~/p $ cd gitbare
 ~/p/gitbare $ git init --bare
Initialized empty Git repository in /Users/local_user/p/gitbare/
 ~/p/gitbare $ cd ..
 ~/p $ cd gittest/
 ~/p/gittest $ git remote add origin /Users/local_user/p/gitbare
 ~/p/gittest $ git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 215 bytes | 215.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To /Users/local_user/p/gitbare
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
 ~/p/gittest $ git push origin testtag
Counting objects: 1, done.
Writing objects: 100% (1/1), 163 bytes | 163.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To /Users/local_user/p/gitbare
 * [new tag]         testtag -> testtag
 ~/p/gittest $ git show-ref
912ce0e40635c90241fdab756dce7ea34938de57 refs/heads/master
912ce0e40635c90241fdab756dce7ea34938de57 refs/remotes/origin/master
b0a6c15cabb990e6d6c46f762891b63608d962f3 refs/tags/testtag
 ~/p/gittest $ git push -d origin testtag
To /Users/local_user/p/gitbare
 - [deleted]         testtag
 ~/p/gittest    git tag -d testtag
Deleted tag 'testtag' (was b0a6c15)
 ~/p/gittest $ git show-ref
912ce0e40635c90241fdab756dce7ea34938de57 refs/heads/master
912ce0e40635c90241fdab756dce7ea34938de57 refs/remotes/origin/master
 ~/p/gittest

1

হাই কেবল আমার তৈরি একটি উপনাম ভাগ করতে চেয়েছিল যা একই কাজ করে:

আপনার ~ / .gitconfig এ নিম্নলিখিতগুলি যুক্ত করুন

[alias]
    delete-tag = "!f() { \
            echo 'deleting tag' $1 'from remote/origin ausing command: git push --delete origin tagName;'; \
            git push --delete origin $1; \
            echo 'deleting tag' $1 'from local using command: git tag -d tagName;'; \
            git tag -d $1; \
        }; f"

ব্যবহারের মতো দেখাচ্ছে:

-->git delete-tag v1.0-DeleteMe
deleting tag v1.0-DeleteMe from remote/origin ausing command: git push --delete origin tagName;
To https://github.com/jsticha/pafs
 - [deleted]             v1.0-DeleteMe
deleting tag v1.0-DeleteMe from local using command: git tag -d tagName;
Deleted tag 'v1.0-DeleteMe' (was 300d3ef22)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.