মার্চুরিয়াল পূর্বাবস্থায় ফেরানো শেষ প্রতিশ্রুতি


125

আমি কীভাবে আমার শেষ দুর্ঘটনাক্রমে কমরেড (ধাক্কা না দিয়ে) বুধবারের পরিবর্তনটি পূর্বাবস্থায়িত করতে পারি?

যদি সম্ভব হয় তবে টরটোইজএইচজি দিয়ে এমন করার উপায়টিকে অগ্রাধিকার দেওয়া হবে।

হালনাগাদ

আমার কংক্রিটের ক্ষেত্রে আমি একটি পরিবর্তনটি নিয়েছিলাম (ধাক্কা দেয় না)। তারপরে আমি সার্ভার থেকে টানা এবং আপডেট করেছি। এই নতুন আপডেটগুলির সাথে আমি সিদ্ধান্ত নিয়েছি, আমার শেষ প্রতিশ্রুতি অপ্রচলিত এবং আমি এটি সিঙ্ক করতে চাই না। সুতরাং দেখে মনে হচ্ছে, hg rollbackঠিক আমি যা সন্ধান করছি তা নয়, কারণ এটি আমার প্রতিশ্রুতিবদ্ধতার পরিবর্তে টান রোলব্যাক করবে।


1
দু'টি তৈরি করা hg rollback, এবং তারপরে আবার টানতে হবে?
ভোনসি

1
প্রথম রোলব্যাকটি পূর্বে পূর্বাবস্থায় ফিরে আসে না, দ্বিতীয় রোলব্যাকটি আমাকে "কোনও রোলব্যাক তথ্য উপলভ্য নয়" বলে "
মার্টিন বুবারেল

1
আমি একই পরিস্থিতির মুখোমুখি হয়েছি এবং যতদূর আমি জানি যে একবার আপনি অন্য কোনও অপারেশন করেছেন - আপনি ফিরে যেতে পারবেন না বা ইতিহাস থেকে সরাতে পারবেন না। আপনাকে এইচজি সংগ্রহস্থল পুনরায় ক্লোন করতে হবে।

3
strip --keep: Stackoverflow.com/questions/29413851/... সরাসরি কাজের solves যেমন এম কিউ qimport আছে। অন্যথা, এটা ভাল কেবল হতে পারে rebaseদৃশ্যকল্প যদি স্থানীয় পরিবর্তনগুলি হয় এছাড়াও পাহারা দিয়ে রাখতে বললেন এবং কোন বিরোধ নেই। ( উভয় শাখা থেকে কিছু সংযুক্ত পরিবর্তনগুলি রাখার জন্য মার্জটি ব্যবহার করুন যখন এটি কাঙ্ক্ষিত গ্রাফ শেষ লক্ষ্য হয়, বিশেষত একটি দ্রুতগতির ক্ষেত্রে) এটি কেবল শাখাটি বন্ধ করার জন্যও বৈধ হতে পারে, যা এখনও 'ইতিহাস সংরক্ষণ করে' (তবে চূড়ান্ত রাষ্ট্র কাঙ্ক্ষিত উপর নির্ভর করে) একত্রীকরণের চেয়ে আলাদাভাবে।
ব্যবহারকারী 2864740

2
@ User2864740 বলেন, hg strip --keepকমান্ড ব্যবহার করতে হয়, কিন্তু আপনি একটি সংস্করণ, যেমন প্রদান করা প্রয়োজন: hg strip --keep -r .। এই উত্তরটি ভাল ব্যাখ্যা করে stackoverflow.com/a/19064016/1286571
ForeverWintr

উত্তর:


77

একটি উপায় হবে hg rollback (Hg2.7, অগাস্ট 2013 হিসাবে অবহেলিত)

শেষ প্রতিশ্রুতিতে ভুলগুলি সংশোধন করার hg commit --amendপরিবর্তে দয়া করে ব্যবহার করুন rollback

একটি সংগ্রহস্থলে সর্বশেষ লেনদেনটি আবার রোল করুন।

যখন সংগঠনের বা মার্জ , Mercurial যোগ changeset গত এন্ট্রি।
মার্চারিয়াল লেনদেনের আগে প্রতিটি ফাইলের নাম এবং তার দৈর্ঘ্যের একটি লেনদেন লগ রাখে। গর্ভপাত বন্ধ হয়ে গেলে, এটি প্রতিটি ফাইলকে তার পূর্বের দৈর্ঘ্যে ছাঁটাই করে দেয়। এই সরলতাটি কেবলমাত্র রেভলোগগুলি পরিশিষ্টের জন্য তৈরি করার একটি সুবিধা । লেনদেনের জার্নালটি একটি পূর্বাবস্থায় ফিরে আসা চালানোর অনুমতি দেয়।

দেখুন TortoiseHg রিকভারি অধ্যায় :

বিকল্প পাঠ

এই থ্রেড এছাড়াও মধ্যে পার্থক্য বিস্তারিত hg rollbackএবং hg strip:
(দ্বারা লিখিত মার্টিন Geisler যিনি ইত্যাদি অবদান)

  • ' hg rollback' শেষ লেনদেন সরিয়ে ফেলবে। লেনদেন একটি ধারণা যা প্রায়শই ডাটাবেসে পাওয়া যায়। মার্চুরিয়ালে আমরা একটি লেনদেন শুরু করি যখন নির্দিষ্ট অপারেশনগুলি চালিত হয়, যেমন প্রতিশ্রুতিবদ্ধতা, ধাক্কা, টান ...
    যখন অপারেশন সফলভাবে শেষ হয়, লেনদেনটি সম্পূর্ণ হিসাবে চিহ্নিত হয়। যদি কোনও ত্রুটি দেখা দেয় তবে লেনদেনটি "রোলড ব্যাক" হয়ে যায় এবং সংগ্রহস্থলটি আগের মতো একই অবস্থায় ছেড়ে যায়।
    আপনি 'এইচজি রোলব্যাক' দিয়ে ম্যানুয়ালি একটি রোলব্যাক ট্রিগার করতে পারেন। এটি সর্বশেষ লেনদেনের আদেশটি পূর্বাবস্থায় ফিরিয়ে আনবে। যদি একটি পুল কমান্ড বিভিন্ন শাখাগুলির মধ্যে 10 টি নতুন চেঞ্জসেটর সংগ্রহস্থলে নিয়ে আসে তবে ' hg rollback' সেগুলি সমস্ত সরিয়ে ফেলবে। দয়া করে নোট করুন: আপনি যখন কোনও লেনদেন রোলব্যাক করবেন তখন কোনও ব্যাকআপ নেই !

  • ' hg strip' একটি পরিবর্তন এবং তার সমস্ত বংশধরকে মুছে ফেলবে। চেঞ্জসেটগুলি একটি বান্ডিল হিসাবে সংরক্ষণ করা হয়, যা আপনার যদি আবার প্রয়োজন হয় তবে আপনি আবার আবেদন করতে পারেন।

ForeverWintr মন্তব্যগুলিতে পরামর্শ দেয় (2016 সালে, 5 বছর পরে)

আপনি প্রথম এইচজি ফাইলগুলি ভুলে গিয়ে 'আন-কমিট' করতে পারেন, উদাহরণস্বরূপ hg forget filea; hg commit --amend:, তবে এটি অপ্রয়োজনীয় বলে মনে হচ্ছে।
hg strip --keepআধুনিক এইচজি জন্য সম্ভবত একটি ভাল সমাধান।


আমি যখন বুঝতে পারি যে রোলব্যাকটি শেষ লেনদেনটি সরিয়ে দেয়। আমার ক্ষেত্রে আমি একটি প্রতিশ্রুতিবদ্ধ করেছি, তারপরে আমি সার্ভার থেকে টানলাম। সুতরাং, তার মানে কি আমি প্রতিশ্রুতির পরিবর্তে টানটি রোলব্যাক করব?
মার্টিন বুবারেল

1
@ মার্টিন বুবারেল: সেলেনিক. com / mercurial / hg.1.html # rolback অনুসারে, টানাকে লেনদেন হিসাবে বিবেচনা করা হয়। সুতরাং যদি আপনি টানা, কার্যকর করা হয়hg rollback করা কমিটের পরিবর্তে টানটিকে পূর্বাবস্থায় ফিরিয়ে আনবে।
টিম হেনিগান

2
আমি কীভাবে hg commit --amendকাজ করার কথা তা নিশ্চিত নই , তবে আমার জন্য এটি কমিট বার্তাটি সংশোধন করার জন্য একটি সম্পাদক আমাকে দিয়েছে এবং কোন ফাইলগুলি অন্তর্ভুক্ত ছিল তা পরিবর্তন করার কোনও পদ্ধতি নেই। আমি সংরক্ষণ না করেই সম্পাদকটি থেকে বেরিয়ে এসেছি এবং আমার ভুল প্রতিশ্রুতিটি সমস্ত পরিবর্তিত ফাইল অন্তর্ভুক্ত করার জন্য পরিবর্তিত হয়েছিল !
টিম টিসডাল

2
কীভাবে প্রশ্নের উত্তর ব্যবহার করে কীভাবে সম্পন্ন করবেন তা আমার কাছে পরিষ্কার নয় hg commit --amend। আপনি প্রথমে ফাইলগুলি hg forgetটাই করে 'আন-কমিট' করতে পারেন , উদাহরণস্বরূপ hg forget filea; hg commit --amend:, তবে এটি অপ্রয়োজনীয় বলে মনে হচ্ছে। এইচজি স্ট্রিপ - রক্ষণাবেক্ষণ সম্ভবত আধুনিক এইচজির জন্য আরও ভাল সমাধান।
ForeverWintr

1
@JasonS book.mercurial-scm.org/read/... : একটি ভাল, পড়া হয় যদিও আপনার ক্ষেত্রে, এছাড়াও আপনি HG রিসেট বিবেচনা করতে পারে stackoverflow.com/a/31302998/6309
VonC

46

hg strip সম্পূর্ণরূপে সংগ্রহস্থল থেকে একটি সংশোধন (এবং কোনও বংশধর) সরিয়ে ফেলবে।

স্ট্রিপটি ব্যবহার করতে আপনাকে আপনার .hgrc (বা mercurial.ini) এ নিম্নলিখিত লাইনগুলি যুক্ত করে MqExistance ইনস্টল করতে হবে :

[extensions]
mq =

কচ্ছপএইচজি-তে স্ট্রিপ কমান্ডটি ওয়ার্কবেঞ্চে পাওয়া যায়। একটি পুনর্বিবেচনায় ডান ক্লিক করুন এবং 'ইতিহাস পরিবর্তন করুন' -> 'স্ট্রিপ' চয়ন করুন।

যেহেতু stripভান্ডারটির ইতিহাস পরিবর্তন করে আপনার কেবল এটি সংশোধনগুলিতে ব্যবহার করা উচিত যা এখনও কারও সাথে ভাগ করা হয়নি। আপনি যদি মার্উরিয়াল ২.১+ ব্যবহার করছেন তবে আপনি পর্যায়ক্রমে ব্যবহার করতে পারেন এই তথ্যগুলি ট্র্যাক । যদি কোনও প্রতিশ্রুতি এখনও খসড়া পর্যায়ে থাকে তবে এটি অন্য সংগ্রহস্থলের সাথে ভাগ করা হয়নি যাতে আপনি নিরাপদে এটিকে ছাঁটাই করতে পারেন। (এটি নির্দেশ করার জন্য জাসুরাসকে ধন্যবাদ)।


2
যদি প্রশ্নের পুনর্বিবেচনাটি এখনও খসড়া বাক্যাংশে রয়েছে (বা আপনার সকলের কাছে এটি রেপোর কাছে টানা / টানা হয়েছে এবং তাদের মধ্যে স্ট্রিপটি প্রয়োগ করা হয়েছে) (যা এই বর্ণনার ক্ষেত্রে রয়েছে) তবে এটি সেরা এবং পরিষ্কার বিকল্প স্যুও।
GazB

4
আপনার যদি টরটোইজ ইনস্টল করা থাকে তবে বিশ্বব্যাপী এমকিউ সক্রিয় করার জন্য একটি গ্রাফিকাল ইন্টারফেস রয়েছে। বর্তমান সংস্করণে: "ফাইল-> সেটিংস-> গ্লোবাল সেটিংস ট্যাব-> এক্সটেনশন-> এমকিউ" সক্ষম করুন বা "ফাইল সম্পাদনা করুন" বোতামের মাধ্যমে সেটিংস ফাইলটিতে অ্যাক্সেস করুন।
ডেভিড

19

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

সুতরাং আপনি যদি তাদের মাথায় টানেন এবং আপডেট হন তবে আপনি এটি করতে পারেন:

hg --config ui.merge=internal:local merge

বর্তমানে যাচাই করা সংশোধনীতে সমস্ত পরিবর্তন রাখে এবং চেক-আউট-আউট সংশোধনীর কোনও পরিবর্তনই রাখে না (আপনি যা লিখেছেন যে আপনি আর চান না)।

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


5

hg rollback আপনি কি চান

TortoiseHg hg rollbackএ কমিট ডায়ালগটি সম্পন্ন হয়। কমিট ডায়লগটি খুলুন এবং "পূর্বাবস্থায় ফিরিয়ে আনুন" নির্বাচন করুন।

বিকল্প পাঠ


1
আমি একটি প্রতিশ্রুতিবদ্ধ করেছি, তারপরে একটি টানুন এবং আপডেট করুন / সিঙ্ক করুন। এই নতুন পরিবর্তনগুলির সাথে আমি স্থির করেছি যে আমার শেষ প্রতিশ্রুতিটি অপ্রচলিত এবং এটি পূর্বাবস্থাপন করতে চাই। টার্টোইজএইচজি-তে পূর্বাবস্থায় ফেরা বোতামটি আমার ক্ষেত্রে অক্ষম।
মার্টিন বুবারেল

রোলব্যাক এখন হ্রাস করা হয়েছে।
ক্রিক

টর্টোইজ এইচজির বর্তমান সংস্করণে আপনি সংগ্রহস্থল মেনু আইটেম থেকে রোলব্যাক / পূর্বাবস্থায় ফিরতে পারেন।
daveywc

@ ইউপ দ্য ক্রিকের উদ্ধৃতি প্রয়োজন।
ড্যানম্যান

@ ড্যানমন - তিনি যে লিঙ্কটি দিয়েছিলেন তা পরীক্ষা করুন।
আপক্রিক

3

TortoiseHg ওয়ার্কবেঞ্চ 4.4.1 (07.2018) এর বর্তমান সংস্করণে আপনি ব্যবহার করতে পারেন Repository- Rollback/undo...:
এখানে চিত্র বর্ণনা লিখুন


1

এটির কার্যকারিতা

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


0

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

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