গিট: মার্জড ব্রাঞ্চ কে রিভার্ট করার সহজ উপায়

গিট: মার্জড ব্রাঞ্চ কে রিভার্ট করার সহজ উপায়
জুলাই ১৮, বুধবার, ২০১৮


অনেক সময় আপাত দৃষ্টিতে কঠিন একটা কাজের বা সমস্যার খুব সহজ সমাধান পাওয়া যায়।  Git/BitBucket, IntelliJ  নিয়ে পড়া এমন একটা কঠিন সমস্যার সহজ সমাধান পেয়ে শেয়ার করার লোভ সামলাতে পারলাম না। সমস্যায় কিভাবে পড়লাম সেটাও ইন্টারেষ্টিং।

খুলে বলি। একটা JIRA টিকেটে কাজ করছিলাম। নিয়ম অনুযায়ী ডেভেলপমেন্ট ব্রাঞ্চ তৈরি করে আমার কোড লিখছিলাম। কাজ শেষ, টেস্ট করাও শেষ এইবার কোড রিভিউ করার জন্য কোড কমিট (commit) করে রিমোট রিপোসিটোরিতে পুশ (push) করতে হবে।  সাধারণত রিমোট মাস্টার ব্রাঞ্চ থেকে লেটেস্ট কোড প্রথমে পুল (pull) করে নিজের ডেভেলপমেন্ট ব্রাঞ্চ -এ মার্জ করে তারপর কোড রিভিউয়ের জন্য পুশ করতে হয়। এটা করার কারণ, অন্য ডেভেলপারদের ইতিমধ্যে করা কোড চেঞ্জ নিজের ব্রাঞ্চে নিয়ে এসে নিশ্চিত করা যে কোনো মার্জ কনফ্লিক্ট নাই।

যাই হোক, আমি যেই ভুলটা করলাম তা হচ্ছে, রিমোট মাস্টার (origin/master) থেকে কোড পুল করেছি ঠিকই কিন্তু মার্জ করার সময় IntelliJ IDE তে ভুল করে মাস্টার চেকবক্স (master) সিলেক্ট করে বসেছি। এই মাস্টার তো রিমোট মাস্টার ব্রাঞ্চ না, বরং নিজের লোকাল মাস্টার ব্রাঞ্চ। আর আমার লোকাল মাস্টার ব্রাঞ্চে যে কবে কখন কিছু কোড চেঞ্জ করে রেখেছি তার খেয়াল নেই।  যাই হোক, IntelliJ একটা ওয়ার্নিংও বোধহয় দিয়েছিলো, আমি চোখ বন্ধ করে সেটা পাত্তা না দিয়ে, কোড মার্জ করে, কমিট করে ফাইনালি পুশ করে দিয়েছি!!

এখন আমার ডেভেলপমেন্ট ব্রাঞ্চ-এ আমার করা দরকারি কোড -এর পাশাপাশি আমার লোকাল মাস্টার ব্রাঞ্চে থাকা পুরোনো কিছু অদরকারি, ফালতু কোড চেঞ্জও চলে আসছে।

লোকাল মাস্টার ব্রাঞ্চ মার্জ করার পর কমিট লগ 

প্রশ্ন হচ্ছে, মার্জ রিভার্ট বা আন-মার্জ করতে হয় কিভাবে? শুধু কমিট করলে নাহয় কোড রিভার্ট করে ফেলতাম। কিন্তু মার্জ করে যে আমি কোড রিমোট রিপোসিটরিতে পুশও করে বসে আছি।

রাত হয়ে গেছে, কাজটা শেষ করে ঘুমাবো। কালকে সকালে কোড রিভিউ আছে।  নিজের উপর খুব মেজাজ খারাপ হচ্ছিলো। গুগল ভরসা ভেবে সার্চ করতে বসলাম। "how to undo a merge in bitbucket" লিখে সার্চ দিতেই যথারীতি Stack Overflow তে সল্যুশন আছে দেখলাম।  কিন্তু বেশ জটিল সল্যুশন মনে হলো।  এই সল্যুশন ইমপ্লিমেন্ট করার সাহস পাচ্ছিলাম না।  স্কাইপে দেখলাম আমার ম্যানেজার এখনো অনলাইন।  এই লোকটা কাজ পাগল। খুব হেল্পফুলও।  সাহস করে নক করলাম, আর বললাম আমার ভুলের কথা। Stack Overflow -র সল্যুশনটা যে বেশ জটিল লাগছে সেটা চেপে গেলাম। ভদ্রলোক কিছু প্রশ্ন করে সিচুয়েশনটা বুঝে নিলেন। মোট ৪ টা ফাইল এক্সট্রা চেঞ্জ হয়ে গেছে শুনে যেটা বললেন সেইটাই সবচেয়ে সহজ সল্যুশন।  সল্যুশনটা এরকম:

"আন-মার্জ করার দরকার নাই। মার্জ করার ফলে সেসব এক্সট্রা ফাইল মোডিফাইড হয়ে গেছে, সেগুলো IntelliJ তে একটা একটা করে খুলে গিট > লোকাল হিস্ট্রি (Git > local history) দেখো আর diff  ব্যবহার করে (মার্জের আগের আর পরের) কী পরিবর্তন হয়েছে দেখে, আগের চেঞ্জ গুলো আবার ফিরিয়ে নিয়ে আসো।  সব ঠিক হয়ে যাওয়ার পর, আবার কোড কমিট করে, পুশ করে দেও -ব্যস প্রবলেম সল্ভড! "

ব্যাপারটা আমার কাছে অনেকটা এরকম মনে হলো: ২-এর সাথে ২ যোগ করতে গিয়ে ভুল করে অতিরিক্ত ৩ ও যোগ করে ফেলেছ, কিন্তু এখন ৩ বিয়োগ করতে চাচ্ছ না বা পারছো না !?  সমস্যা নেই,  -৩ (নেগেটিভ তিন) যোগ করে দেও, একই ফল পাবে!

তাই তো! শালার আমার মাথায় যে কেন এটা আসলো না?!

রিভার্ট (?) করার পর গিট লগ 

তাঁকে ধন্যবাদ দিয়ে কোড ঠিক করে, কমিট-পুশ করে ফাইনালি কোড রিভিউয়ের জন্য পুল রিকোয়েস্ট করে আরামে ঘুম দিলাম!

আজকে সকালে আমার কোড রিভিউয়ে এপ্রুভ হয়ে রিমোট মাস্টার ব্রাঞ্চে মার্জ হয়েছে! প্রোডাক্শনে যাচ্ছে আমার কোড।  :)






1 comment:

  1. That is very interesting; you are a very skilled blogger. I have shared your website in my social networks! A very nice guide. I will definitely follow these tips. Thank you for sharing such detailed article.
    will help you more:
    谷歌优化,baidu seo,谷歌seo,外贸网站建设,独立站引流,海外推广,web development outsourcing China ,web design ,web design China,谷歌推广,外贸英文网站建设,谷歌优化最牛的公司,谷歌排名,英文网站翻译,西安facebook营销,上海谷歌优化,上海谷歌seo,北京谷歌优化,facebook,北京谷歌seo
    外贸建站 推广

    ReplyDelete

কাজের জায়গায় ভুল থেকে শেখা: regex 'র একটা খুব কমন বিষয় যেটা এতদিন ভুল জানতাম

কাজের জায়গায় ভুল থেকে শেখা: regex 'র একটা খুব কমন বিষয় যেটা এতদিন ভুল জানতাম  ৩ ফেব্রুয়ারি, শনিবার, ২০২৪ রেগুলার এক্সপ্রেশন (Regular Exp...