আমি কীভাবে গিটে একটি ট্যাগে মাস্টার শাখাটি ফিরিয়ে দেব?


92

আমাদের শাখাগুলির উত্স এবং বিকাশ রয়েছে। মাস্টারের প্রাথমিক অবস্থা ট্যাগ করা হয়েছিল tag_ABC

আমাদের বিকাশ শাখায় কয়েকটি পরিবর্তন হয়েছে এবং উত্সে ঠেলে দেওয়া হয়েছে। তারপরে আমরা দুর্ঘটনাক্রমে মাস্টার হিসাবে বিকাশ একত্রিত হয়ে উত্সে ঠেলে দিয়েছি।

এখন আমরা মাস্টারটিকে চেকপয়েন্টে ফিরে যেতে চাই tag_ABC। আমরা কীভাবে এটি করতে পারি?

উত্তর:


164

আপনি করতে পারেন

git checkout master
git reset --hard tag_ABC
git push --force origin master

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


4
এইভাবে সমস্ত শাখা জোর দিয়ে ধাক্কা দেওয়া হবে। আপনি চেষ্টা করতে পারেনgit push --force origin master
ডানজা

4
রেফারেন্সের জন্য, পূর্বের প্রতিশ্রুতিতে ফিরে যেতে, আপনি একটি করতে পারেনgit reset --hard HEAD^
জিওফ

4
বিটিডাব্লু git reset --hard HEAD^একসাথে একটি প্রতিশ্রুতি ফিরে পাওয়ার জন্য একাধিকবার ব্যবহার করা যেতে পারে তারপর এটি রিমোটে থাকলে git push --force origin masterব্যবহার করা যেতে পারে।
লুক ওয়েঙ্কে

পূর্ববর্তী সংস্করণ ব্যবহারে অন্য লোকের স্থানীয় কপির মাস্টার শাখাটি পুনরায় সেট করতে git pullএবংgit reset --hard origin/master
লূক ওয়েনকে

এই প্রত্যাবর্তনের পরে একটি সামান্য পরামর্শ, দলের বলা যেতে পারে: মাস্টার শাখা থেকে টান !! ধন্যবাদ !!
জেরিচার্ডস

95

এটি প্রশ্নের সরাসরি উত্তর নয় তবে একটি শাখার কোডটিকে কোনও ট্যাগ রিলিজে ফেরানোর উপায় অনুসন্ধান করার পরে এই পৃষ্ঠাটি ফিরে আসবে।

আরেকটি উপায় হ'ল শাখার বর্তমান অবস্থা এবং আপনি যে ট্যাগটিতে ফিরে যেতে চান তার মধ্যে একটি পার্থক্য তৈরি করা এবং তারপরে শাখায় এটি প্রয়োগ করা। এটি সংস্করণ ইতিহাসকে সঠিক রাখে এবং সেই পরিবর্তনগুলি যা আবার ফিরে আসে সেগুলি দেখায়।

ধরে নেওয়া আপনার শাখাটিকে মাস্টার বলা হয় এবং আপনি যে ট্যাগটি ফিরে যেতে চান তাকে 1.1.1 বলা হয়

git checkout 1.1.1
git diff master > ~/diff.patch
git checkout master
cat ~/diff.patch | git apply
git commit -am 'Rolled back to version 1.1.1'
git push origin master

21
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ এটি ইতিহাস অক্ষত রাখে এবং রেপো চেক আউট থাকা অন্যদের জন্য সমস্যা সৃষ্টি করে না।
OpenUserX03

4
এটি মার্জিত মনে হয়। তবে আমি কিউএ শাখাকে আগের ট্যাগটিতে ফেরাতে চেষ্টা করেছি এবং প্যাচ ব্যর্থ বার্তা পেয়েছি। $ বিড়াল ../diff_qa.patch | গিট প্রয়োগ <স্টিডিন>: 55: হোয়াইটস্পেসের পিছনে। <stdin>: 336: পিছনে সাদা স্থান। <stdin>: 12692: পিছনে সাদা স্থান। <stdin>: 12695: পশ্চাদগামী সাদা স্থান। <li> {{$ ট্যাগ ['র‌্যাঙ্ক'] + 1}}: <স্টিডিন>: 12706: পিছনে সাদা স্থান। ত্রুটি: প্যাচ ব্যর্থ হয়েছে: .env.Wolo: 1
রিক্যাটেক

আমি বেশ কয়েকটি সমাধান চেষ্টা করেছি, কিন্তু কোনওটিই কাজ করে নি। এই একজন মোহন মত কাজ করে। অনেক ধন্যবাদ @ জন
স্ট্র্যাব

এটি করার সঠিক উপায়। এটি অ-ধ্বংসাত্মক এবং পুরো ইতিহাস সংরক্ষণ করে
নিতিন বানসাল

এটি আমার পক্ষে কাজ করে না। আমি কোনও সমস্যা ছাড়াই প্রথম 3 টি কমান্ড চালাতে পারি cat ~/diff.patch | git apply, কিন্তু যখন আমি এটি করি তা আমাকে বলে error: unrecognized input। কোন ধারণা? @ নিতিনবাঁসাল সম্ভবত আপনি মন্তব্য করেছেন যেহেতু?
অভিজ্ঞতা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.