আপনি গিট ট্যাগটির কীভাবে নাম পরিবর্তন করবেন?


1219

আজ আমি কোনও প্রকল্পের লগগুলি সন্ধান করছিলাম এবং বুঝতে পেরেছিলাম যে আমি কিছুক্ষণ আগে একটি ট্যাগের নামটি আঙুল দিয়েছি। ট্যাগটির নামকরণের কোনও উপায় আছে? গুগল দরকারী কিছু আপ করেনি।

আমি বুঝতে পারি আমি ট্যাগ করা সংস্করণটি পরীক্ষা করে দেখতে এবং একটি নতুন ট্যাগ বানাতে পারি, এমনকি আমি এটি চেষ্টা করেছিলাম। তবে এটি একটি ট্যাগ অবজেক্ট তৈরি করে বলে মনে হচ্ছে যা একেবারেই সঠিক নয়। একের জন্য,

git tag -l

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


আপনি কি একই অনুরোধটি ব্যবহার করেছেন, অর্থাত্ পুরানো ট্যাগটি যদি টীকায়িত / স্বাক্ষরিত ট্যাগটি থাকে তবে নতুন ট্যাগটিও এই জাতীয়, বা এটি হালকা ওজনের ট্যাগ?
জাকুব নরবস্কি

1
ভুল পুরাতন ট্যাগ এবং পছন্দসই নতুন ট্যাগ উভয়ই টীকাযুক্ত এবং স্বাক্ষরযুক্ত হওয়া উচিত। পুরানো ট্যাগটি 'গিট ট্যাগ -a খারাপ_ট্যাগ_নাম' দিয়ে তৈরি করা হয়েছিল, তাই আমি 'গিট ট্যাগ-একটি ভাল_ট্যাগ_নাম' এর লাইনে কিছু করতে চাই।
ব্র্যান্ডন ফসডিক

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

7
git log --oneline --decorate --graphট্যাগ পরিষ্কার করার সময় সহায়ক।
জোয়েল পুরারা

আপনি এক লাইনে একটি ট্যাগটির নাম পরিবর্তন করতে পারেন: নীচে আমার উত্তর দেখুন
ভোনসি

উত্তর:


2037

এখানে কিভাবে আমি একটি ট্যাগ নামান্তর হয় oldথেকে new:

git tag new old
git tag -d old
git push origin :refs/tags/old
git push --tags

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

অবশেষে, নিশ্চিত হয়ে নিন যে অন্য ব্যবহারকারীরা মুছে ফেলা ট্যাগটি সরিয়েছেন। নিম্নলিখিত কমান্ডটি চালানোর জন্য দয়া করে তাদের (সহকর্মীদের) বলুন:

git pull --prune --tags

মনে রাখবেন যে আপনি যদি কোনও টীকাযুক্ত ট্যাগ পরিবর্তন করছেন তবে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে নতুন ট্যাগের নামটি অন্তর্নিহিত প্রতিশ্রুতিটি উল্লেখ করছে এবং আপনি মুছে ফেলতে চলেছেন এমন পুরানো টীকাযুক্ত ট্যাগ অবজেক্টটি নয়। সুতরাং, git tag -a new old^{}পরিবর্তে ব্যবহার করুন git tag new old(এটি হ'ল এ্যানোটেটেড ট্যাগগুলি হ'ল লাইটওয়েট ট্যাগগুলি নয়, এই উত্তরে আরও তথ্য হবে )।


19
যদি ট্যাগটি টীকায়িত করা হয় তবে নতুন ট্যাগটিতে
পুরানোটির

25
@ নিকসফট, আমি উপরে বর্ণিত ট্যাগ সহ কিছু করেছি। বার্তাটি পুরানো থেকে নতুন জরিমানা করে অনুলিপি করা হয়েছিল। আমার কাছে গিটের নতুন সংস্করণ আছে?
কাতিহুফ

25
git push origin :refs/tags/oldgit push origin :oldআমি মনে করি সহজ করা যেতে পারে ।
জেসি গ্লিক

25
"গিট পুশ অরিজিন রেফ / ট্যাগ / নতুন" এই ট্যাগটির আরও সুস্পষ্ট হতে আমি "গিট পুশ - ট্যাগস" পরিবর্তন করার পরামর্শ দেব। আপনি অজান্তেই অন্য ট্যাগ ঠেকাতে চান না।
ক্রিশ

11
সতর্কবাণী : ব্যবহার git tag new oldপুরাতন ট্যাগ একটি ট্যাগ ইশারা তৈরি করবে, না বৃদ্ধ ট্যাগ এর কমিট। (দেখুন কেন আমি গিট জিইউআই থেকে আমার ট্যাগটি চেকআউট করতে পারছি না? )
স্টিভয়েসিয়াক

297

প্রথম প্রাচীনকালের উপনাম নতুন তৈরি করুন:: মূল প্রশ্ন হল কিভাবে একটি ট্যাগ, যা সহজ নামান্তর করতে ছিল git tag NEW OLDতখন পুরোনো মুছে: git tag -d OLD

"গিট ওয়ে" এবং (ইন) বিমূর্ততা সম্পর্কিত উক্তিটি বন্ধ রয়েছে, কারণ এটি কোনও ট্যাগের নাম সংরক্ষণের কথা বলছে, তবে এটি একটি পৃথক সংগ্রহস্থল হিসাবে উল্লেখ করেছে।


3
উপরের উত্তরটি কিছুটা পছন্দনীয় কারণ এতে git push originব্যবসায় অন্তর্ভুক্ত রয়েছে ।
রোলি

সবচেয়ে সহজ উপায়, কাজ মহান কোনো পূর্ববর্তী সংস্করণ ট্যাগ Gitflow সঙ্গে তৈরি করা নামান্তর করতে
RousseauAlexandre

5
সতর্কবাণী : ব্যবহার git tag new oldপুরাতন ট্যাগ একটি ট্যাগ ইশারা তৈরি করবে, না বৃদ্ধ ট্যাগ এর কমিট। (দেখুন কেন আমি গিট জিইউআই থেকে আমার ট্যাগটি চেকআউট করতে পারছি না? )
স্টিভয়েসিয়াক

118

অন্যান্য উত্তর ছাড়াও:

প্রথম আপনি একটি নির্মাণ করা প্রয়োজন ওরফে এর পুরাতন ট্যাগ নাম, মূল নির্দেশিত সমর্পণ

git tag new old^{}

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

git tag -d old

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

# Check your remote sources:
git remote -v
# The argument (3rd) is your remote location,
# the one you can see with `git remote`. In this example: `origin`
git push origin :refs/tags/old

অবশেষে আপনাকে আপনার নতুন ট্যাগটি দূরবর্তী অবস্থানে যুক্ত করতে হবে। আপনি এটি না করা পর্যন্ত নতুন ট্যাগ (টি) যুক্ত করা হবে না :

git push origin --tags

প্রতিটি প্রত্যন্ত অবস্থানের জন্য এটি Iterate।

গিট ট্যাগ পরিবর্তনটি প্যাকেজের গ্রাহকদের জন্য যে প্রভাব ফেলেছে সে সম্পর্কে সচেতন হন !


সতর্কবাণী : ব্যবহার git tag new oldপুরাতন ট্যাগ একটি ট্যাগ ইশারা তৈরি করবে, না বৃদ্ধ ট্যাগ এর কমিট। (দেখুন কেন আমি গিট জিইউআই থেকে আমার ট্যাগটি চেকআউট করতে পারছি না? )
স্টিভয়েসিয়াক

1
লিঙ্কের জন্য ধন্যবাদ পরের বারের জন্য, দয়া করে একটি সম্পাদনা ফাইল করুন - উত্তর দেওয়াও একটি সম্প্রদায়ের প্রচেষ্টা। ধন্যবাদ।
কায়সার

আমি কোনও সম্পাদনা করিনি কারণ আমি এখনও নিজের জন্য কোডটি পরীক্ষা করি নি। (
লিঙ্কিত

একবার আমরা এটি করার git tag new old^{}পরে, আমাদের প্রয়োজন হবে না git tag new_tag_name old_tag_name(প্রথম পদক্ষেপ)।
945

28

যদি এটি প্রকাশিত হয় তবে আপনি এটিকে মুছতে পারবেন না (টার্গেট করা ও পালকযুক্ত ঝুঁকি ছাড়াই, এটি)) 'গিট ওয়ে' করণীয়:

বুদ্ধিমান জিনিস। আপনার স্বাচ্ছন্দ্য বোধ করবেন এবং একটি আলাদা নাম ব্যবহার করুন Just অন্যরা ইতিমধ্যে একটি ট্যাগ-নাম দেখেছেন এবং যদি আপনি একই নামটি রাখেন তবে আপনি এমন পরিস্থিতিতে থাকতে পারেন যে দু'জনের "সংস্করণ এক্স" রয়েছে তবে তাদের প্রকৃতপক্ষে আলাদা আলাদা "এক্স" এর রয়েছে। সুতরাং কেবল এটি "এক্স 1" কল করুন এবং এটি দিয়ে সম্পন্ন করুন।

অন্যথা,

উন্মাদ জিনিস। আপনি ইতিমধ্যে নতুন সংস্করণটিকে "এক্স "ও বলতে চান, যদিও অন্যরা ইতিমধ্যে পুরানোটি দেখে ফেলেছে। সুতরাং আবার গিট-ট্যাগ -f ব্যবহার করুন, যেন আপনি ইতিমধ্যে পুরানোটি প্রকাশ করেন নি।

এটি এত উন্মাদ কারণ:

গিট ব্যবহারকারীদের পিছনে ট্যাগ পরিবর্তন করে না (এবং এটি হওয়া উচিত নয়)। সুতরাং যদি কেউ ইতিমধ্যে পুরানো ট্যাগটি পেয়ে থাকে তবে আপনার গাছে গিট টান দিয়ে কেবল পুরানোটিকে ওভাররাইট করে দেওয়া উচিত নয়।

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

ম্যান পেজগুলির সমস্ত সৌজন্যে ।


6
অথবা আপনি এই ভুল নামযুক্ত ট্যাগটি (সঠিক নামের সাথে) ট্যাগ করতে পারেন।
জাকুব নরবস্কি

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

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

7
খারাপ উত্তর। "এটি করবেন না" "আমি কীভাবে এটি করতে পারি?" এর সঠিক উত্তর কখনও নয়। আপনি যদি মনে করেন যে এটি করা ভাল ধারণা হয় বা লোকেরা এটি পছন্দ করে তবে ব্যবহারকারী জিজ্ঞাসা করছিল না। যদি কেউ "আমি কীভাবে আমার হাত কেটে ফেলতে পারি" জিজ্ঞাসা করে, হয় এটি কীভাবে হয়েছে তা তাকে বলুন বা তাকে একা রেখে দিন তবে তাকে কাউকে বলার দরকার পড়বে না যে হাত কাটা এমন দুর্দান্ত ধারণা নাও হতে পারে। এবং আপনি এটি করতে পারেন। আপনি একটি নতুন ট্যাগ যুক্ত করতে পারেন এবং পুরানোটি মুছতে পারেন, এটি প্রযুক্তিগতভাবে সম্ভব, এমনকি একটি দূরবর্তী সংগ্রহস্থলটিতেও।
মক্কি

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

25

এই উইকি পৃষ্ঠায় এই আকর্ষণীয় ওয়ান-লাইনার রয়েছে, যা আমাদের মনে করিয়ে দেয় যে আমরা কয়েকটি রেফ চাপতে পারি :

git push origin <refs/tags/old-tag>:<refs/tags/new-tag> :<refs/tags/old-tag> && git tag -d <old-tag>

এবং অন্যান্য ক্লোনারদের করতে বলুন git pull --prune --tags

সুতরাং ধারণাটি ধাক্কা:

একটি উদাহরণ হিসাবে দেখুন " গিটার সংগ্রহস্থলের ভিতরে ট্যাগগুলির নামকরণের পরিবর্তনটি পরিবর্তন করুন? "


এটি টীকা সংরক্ষণ করে?
ব্র্যান্ডন ফসডিক

1
সাবধান হন যে এটি টীকায়িত ট্যাগগুলির জন্য টীকায় মূল ট্যাগের নামটি ছেড়ে যায় !! আমি নিশ্চিত নই যে এটি যদি বাস্তবে কিছু অন্তর্ভুক্ত করে তবে কমপক্ষে বর্তমান সংস্করণগুলিতে।
gbr

@ জিবিআর আপনি টীকাতে থাকা "মূল ট্যাগ নাম" রেখে একটি উদাহরণ দিয়ে উত্তরটি সম্পাদনা করতে পারবেন?
ভোনসি

1
@ ভনসি আমি নিশ্চিত নই যে আপনি যা জিজ্ঞাসা করছেন আমি তা বুঝতে পেরেছি; সম্ভবত আমি পরিষ্কার ছিল না: টীকাগুলি অবজেক্টগুলিতে একটি ট্যাগ ক্ষেত্র থাকে যা ট্যাগটির নামে সেট করা থাকে, আপনি এটি দিয়ে দেখতে পারেন git cat-file -p <tag>; আমার সিস্টেমে আপনার পদ্ধতি সঙ্গে আমি 'পুনরায় নামকরণ করে' ট্যাগ সুত্র (পেতে পারি <new-tag>), কিন্তু তার ট্যাগটি ক্ষেত্র এখনও <old-tag>
gbr

3
@ জিবিআর কি ওপি যা চেয়েছিল তা নয়? তিনি উল্লেখ করেছিলেন "আমার উল্লেখ করা উচিত যে আমি এই যাদুকরী ট্যাগটির পুনর্নবীকরণ প্রক্রিয়াটিও চাই যে ট্যাগটি নামকরণ করা হচ্ছে তা থেকে টীকাটি সংরক্ষণ করা যায় Act আসলে, আমি সত্যিই কেবল নাম এবং অন্য কিছু পরিবর্তন করতে চাই" ( স্ট্যাকওভারফ্লো / সেকশনস ১০০৮6464৯/ কীভাবে আপনি-এর-নাম-এ-গিট-ট্যাগ /… )
ভোনসি

25

অন্যান্য উত্তরের সাথে যুক্ত হিসাবে, আমি আরও পরিচিত * নিক্স মুভ কমান্ড অনুভূতি সহ এক ধাপে এটি করার জন্য একটি উপনাম যুক্ত করেছি। যুক্তি 1 টি পুরানো ট্যাগের নাম, যুক্তি 2 নতুন ট্যাগের নাম।

[alias]
    renameTag = "!sh -c 'set -e;git tag $2 $1; git tag -d $1;git push origin :refs/tags/$1;git push --tags' -"

ব্যবহার:

git renametag old new

এটি আমার জন্য কাজ না, যেহেতু এটি ব্যর্থ হয়েছে !sh(প্রশ্ন উইন্ডোজ গীত সংক্রান্ত হয়), কিন্তু, নিম্নলিখিত বিন্যাসে আপডেট করার পরে, এটা কাজ করে: renametag = "!f() { git tag $2 $1; git tag -d $1; git push origin :refs/tags/$1; git push --tags; }; f"
সানি প্যাটেল

10

এক বা কয়েকটি সংখ্যক ট্যাগের জন্য 3 পদক্ষেপের পদ্ধতি অনুসরণ করুন।

পদক্ষেপ 1: বর্তমান ট্যাগটি নির্দেশ করছে যে প্রতিশ্রুতিবদ্ধ তার কমিট / অবজেক্ট আইডি সনাক্ত করুন

     command: git rev-parse <tag name>
     example: git rev-parse v0.1.0-Demo
     example output: db57b63b77a6bae3e725cbb9025d65fa1eabcde

পদক্ষেপ 2: সংগ্রহস্থল থেকে ট্যাগ মুছুন

     command: git tag -d <tag name>
     example: git tag -d v0.1.0-Demo
     example output: Deleted tag 'v0.1.0-Demo' (was abcde)

পদক্ষেপ 3: পুরানো ট্যাগটি যেভাবে দেখানো হয়েছিল একই প্রতিশ্রুতিবদ্ধ আইডিকে নির্দেশ করে একটি নতুন ট্যাগ তৈরি করুন

     command: git tag -a <tag name>  -m "appropriate message" <commit id>
     example: git tag -a v0.1.0-full  -m "renamed from v0.1.0-Demo" db57b63b77a6bae3e725cbb9025d65fa1eabcde
     example output: Nothing or basically <No error>

স্থানীয় গিটটি একবার ট্যাগ নাম পরিবর্তনের সাথে প্রস্তুত হয়ে গেলে, এই পরিবর্তনগুলি অন্যদের এগুলি নেওয়ার জন্য উত্সটিতে ফিরে যেতে পারে।


এটি মুছে ফেলা ট্যাগটি পিছনে ঠেকানোর পদক্ষেপগুলি হারিয়েছে: git push origin :refs/tags/v0.1.0-Demoএবং ট্যাগগুলি পিছনে ঠেকাতে (অন্যান্য মুলতুবিযুক্ত জিনিস সহ)git push --tags
স্টার ওল্ফ

6

অ্যাডভেঞ্চারসের জন্য এটি এক আদেশে করা যেতে পারে:

mv .git/refs/tags/OLD .git/refs/tags/NEW

7
আপনার git gc
রেফগুলি

2
এটি কেবল স্থানীয় রেপোকেও প্রভাবিত করবে। আপনার যদি রিমোট কনফিগার করা থাকে তবে এটি কী নেতিবাচক প্রভাবের কারণ হতে পারে তা আমি নিশ্চিত নই। আমি এই পদ্ধতির প্রস্তাব দিই না।
Therealklanni

1
আরও মনে রাখবেন যে টীকাগুলি ট্যাগের জন্য এটি সম্ভবত আরও জটিল হবে কারণ অন্যান্য জিনিসগুলির মধ্যে 'টিকা' ব্লগটিতে ট্যাগটির মূল নাম থাকে। আসলে আমি নিশ্চিত নই যে এটি কোনও কিছুর দ্বারা ব্যবহৃত হয়েছে (আশা করি অন্তত যাচাই-ট্যাগের মাধ্যমে) তবে আমি কোনও সুযোগ নেব না।
gbr

1
@ জিবিআর এটি ঠিকঠাক কাজ করে। (অবশ্যই, @ ফরিভালের নোটটি বিবেচনায় আনতে হবে trick) এ কৌশলটি এএলটি সিসিফাস বিল্ড সিস্টেমের যুগে যুগে ব্যাপকভাবে ব্যবহৃত হয়ে আসছে। প্যাকেজের উত্সগুলি কীভাবে সংরক্ষণ করা হয় তা দেখুন: উদাহরণস্বরূপ: git.altlinux.org/gears/g/gear.git2.0.7-alt1 এর মতো পঠনযোগ্য ট্যাগ হ'ল বিল্ড সিস্টেমে রক্ষণাবেক্ষণকারীদের দ্বারা জমা দেওয়া স্বাক্ষরযুক্ত ট্যাগ। এই উত্স থেকে pkg তৈরি এবং প্রকাশ করেছে যে টাস্ক আইডিটি ট্র্যাক করার জন্য বিল্ড সিস্টেম দ্বারা ক্রিপ্টিক ট্যাগগুলি জিবি-সিসিফাস-টাসক 164472.200 স্থাপন করা হয়েছে। এগুলি cpরক্ষণাবেক্ষণকারীদের বার্তাটি অচ্ছুত করে বোবা অনুলিপি ( )।
ইম্জ - ইভান জ্যাকারিয়াশেভ

@ ইম্জ - ইভান জাখরিয়াসেভ জেনে রাখা ভাল, আমি খুব বেশি আস্থা রাখব না যদিও এটি ভবিষ্যতে কিছু পণ্য দিয়ে সমস্যাগুলির জন্ম দেবে না; গিট সংগ্রহস্থলগুলির ফর্ম্যাট এবং প্রত্যাশিত মিথস্ক্রিয়াটির সত্যিকারের কোনও স্পেসিফিকেশন নেই, সুতরাং এটি কার্যকর হলে আমি কমপক্ষে
আশ্চর্যরকমভাবে

3

ইতিমধ্যে ঠেলাঠেলি করা ট্যাগগুলি এবং নাম বদলে দেওয়ার ক্ষেত্রে যে সমস্যাগুলিই আসেনি তা নির্বিশেষে, নামটি পরিবর্তনের জন্য ট্যাগটি যদি কোনও টীকাকৃত হয়, আপনি প্রথমে নিম্নলিখিত একক-লাইন কমান্ড লাইনের জন্য এটি অনুলিপি করতে পারেন:

git tag -a -m "`git cat-file -p old_tag | tail -n +6`" new_tag old_tag^{}

তারপরে, আপনাকে কেবল পুরানো ট্যাগটি মুছতে হবে:

git tag -d old_tag

নিম্নলিখিত দুটি উত্তরের জন্য এই কমান্ড লাইনটি পেয়েছি:

সম্পাদনা করুন:
ট্যাগ্স সেটিংটি স্বয়ংক্রিয়ভাবে সিঙ্ক্রোনাইজেশন ব্যবহার করে সমস্যার মুখোমুখি হয়েছে fetch.pruneTags=true( https://stackoverflow.com/a/49215190/7009806 তে বর্ণিত ), আমি ব্যক্তিগতভাবে প্রথমে সার্ভারে নতুন ট্যাগটি অনুলিপি করতে এবং তারপরে পুরানোটি মুছে ফেলার পরামর্শ দিই । এইভাবে, পুরানো ট্যাগটি মুছতে গিয়ে নতুন ট্যাগ এলোমেলোভাবে মুছে ফেলা হয় না এবং ট্যাগগুলির একটি সিঙ্ক্রোনাইজেশন নতুন ট্যাগটি মুছে ফেলতে চাইবে যা সার্ভারে এখনও নেই । সুতরাং, উদাহরণস্বরূপ, সমস্ত একসাথে আমরা পেয়েছি:

git tag -a -m "`git cat-file -p old_tag | tail -n +6`" new_tag old_tag^{}
git push --tags
git tag -d old_tag
git push origin :refs/tags/old_tag

3

আপনি রিমোট ট্যাগগুলি পরীক্ষা করে না দেখেও নতুন নাম পরিবর্তন করতে পারেন, পুরানো ট্যাগ / শাখাটিকে একটি নতুন নামে নকল করে এবং পুরানোটিকে একটি একক git pushআদেশে মুছে ফেলতে পারেন ।

রিমোট ট্যাগের নাম / রিমোট শাখা → ট্যাগ রূপান্তর: (বিজ্ঞপ্তি :refs/tags/:)

git push <remote_name> <old_branch_or_tag>:refs/tags/<new_tag> :<old_branch_or_tag>

রিমোট শাখার নাম / রিমোট ট্যাগ → শাখার রূপান্তর: (বিজ্ঞপ্তি :refs/heads/:)

git push <remote_name> <old_branch_or_tag>:refs/heads/<new_branch> :<old_branch_or_tag>

রিমোট ট্যাগটির নামকরণ আউটপুট:

D:\git.repo>git push gitlab App%2012.1%20v12.1.0.23:refs/tags/App_12.1_v12.1.0.23 :App%2012.1%20v12.1.0.23

Total 0 (delta 0), reused 0 (delta 0)
To https://gitlab.server/project/repository.git
 - [deleted]               App%2012.1%20v12.1.0.23
 * [new tag]               App%2012.1%20v12.1.0.23 -> App_12.1_v12.1.0.23
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.