গিট দ্বিখণ্ডিত: আপনার কোডটিতে একটি বাগ কীভাবে চিহ্নিত করবেন?

গিট দ্বিখণ্ডিত সম্পর্কিত এই নিবন্ধটি, শিখুন কীভাবে ‘গিট বাইসেক্ট’ কমান্ডটি প্রথম খারাপ প্রতিশ্রুতি সনাক্ত করতে সহায়তা করে যা বাইনারি অনুসন্ধান অ্যালগরিদম ব্যবহার করে একটি বাগ প্রবর্তন করে।

আমার কোড গতকাল অবধি কার্যকর ছিল, তবে দূরবর্তী সংগ্রহস্থল থেকে সাম্প্রতিক টানা কোডটি ভেঙে দেওয়া পর্যন্ত !!!

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



এই নিবন্ধে আচ্ছাদিত বিষয়গুলি নিম্নরূপ:



গিট বাইসেক্ট কেন ব্যবহার করবেন?

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



সুতরাং, এই জাতীয় পরিস্থিতি এড়াতে, আপনি এটি ব্যবহার করতে পারেনগিট দ্বিখণ্ডিতখারাপ প্রকল্পের পুনর্বিবেচনা (বা স্ন্যাপশট) সন্ধানের জন্য আদেশ দিন এবং শেষ পর্যন্ত এটির সাথে এটি ঠিক করুনগিট রিভার্টআদেশ

কীভাবে ‘গিট বিসেক্ট’ অনুসন্ধান করবে?



এই আদেশ দ্বিখণ্ডিত এর মধ্যে আপনার ইতিহাসকে ভাগ করে দেয় ভাল এবং খারাপ প্রতিশ্রুতিবদ্ধ পরিসর এটি আপনার পয়েন্ট কারেন্ট প্রকল্প অবস্থা to a মধ্যসীমা প্রতিশ্রুতিবদ্ধ স্ন্যাপশট গিট বিসেক্ট কমান্ডটি এর পরে চলে যায় প্রতি কমিট আইডি এই সীমার মধ্যে যখন বিরতি প্রতিটি স্ন্যাপশট আপনাকে অনুমতি দেয় কোড পরীক্ষা করুন । বাগটি উপস্থিত থাকলে আপনি প্রতিশ্রুতি হিসাবে ঘোষণা করেন খারাপ, যদি না হয় ভাল অনুসন্ধান শেষ না হলে

বাক্য গঠন

গিট দ্বিখণ্ডিত

গিট দ্বিখণ্ডিতকে আরও ভালভাবে বুঝতে, আসুন একটি প্রকল্প তৈরি করুন যা গাড়ীতে ব্যবহার করার জন্য একটি সহজ নেভিগেশন অ্যাপ্লিকেশনটির কোড বিকাশ করে।

প্রাথমিক প্রকল্প সেটআপ

এমন একটি প্রকল্প তৈরি করতে যা গাড়িতে ব্যবহার করার জন্য একটি সহজ নেভিগেশন অ্যাপ্লিকেশনটির কোড বিকাশ করে, আপনি নীচের পদক্ষেপগুলি অনুসরণ করতে পারেন:

ধাপ 1: আপনার OME হোম ফোল্ডারে একটি নতুন ডিরেক্টরি তৈরি করুন:

সিডি OME হোম এমকেডির আমার_নাভ_অ্যাপ

ধাপ ২: নতুন ডিরেক্টরিতে নেভিগেট করুন:

সিডি $ আমার_নাও_অ্যাপ

ধাপ 3: আমার গিটহাব পৃষ্ঠা থেকে প্রকল্পটি ডাউনলোড করতে ক্লোন করুন:

গিট ক্লোন https://github.com/divyabhushan/my_nav_app.git

কমান্ড দ্বারা মুদ্রিত হিসাবে এখন আসুন আমরা প্রকল্প ডিরেক্টরিগুলি এবং ফাইলগুলির বিন্যাসটি বুঝতে পারি:ls -lTR

উত্স কোড বিন্যাস - গিট বিসেক্ট - এডুরেকা

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

উদাহরণস্বরূপ, একটি সাধারণ গিট লগ কমান্ড ইতিহাস বিস্তারিতভাবে মুদ্রণ করে, তবে আমি ইতিহাসটি বেশ ফর্ম্যাট এবং কাস্টমাইজ করতে চাই। এর মাধ্যমে, আসুন একটি উপনাম নাম সেট করুন - ‘হিস্ট’ ব্যবহার করে গিট ওরফে কমান্ড নীচে প্রদর্শিত হিসাবে:

জাভাতে ফাইলগুলি কীভাবে ব্যবহার করবেন

গিট এলিয়র হিস্ট 'লগ - ব্যাখ্যার = ফর্ম্যাট:'% সি (হলুদ)% হ% ক্রেসেট% বিজ্ঞাপন | % সি (সবুজ)% s% ক্রেসেট% সি (লাল)% ডি% ক্রেসেট% সি (নীল) [% আন] '- অনুগ্রহ - ডেকোর্ট - তারিখ = সংক্ষিপ্ত'

এখন, আমি এই বাগ বাগের বৈশিষ্ট্যটি একটি পৃথক শাখায় নিয়ে যাচ্ছি, যাতে ‘মাস্টার’ শাখায় মূল বিকাশে হস্তক্ষেপ না হয়। এটি করতে, নীচের কমান্ডের সেটটি অনুসরণ করুন:

  • শাখা ‘দেব’ তৈরি করুন: [মাস্টার] $গিট শাখা দেব
  • শাখা ‘দেব’ এ স্যুইচ করুন: $গিট চেকআউট দেব
  • ইতিহাসের লগগুলি তালিকাবদ্ধ করুন: [দেব]যাও হিস্ট[দ্রষ্টব্য: এখানে 'উলাম' কমান্ড ব্যবহৃত হয়েছে]

আরও, আমি সর্বশেষ পরিচিত ভাল প্রতিশ্রুতিটি হাইলাইট করেছি যে আমি জানি যে আমার স্ক্রিপ্ট প্রত্যাশিত পরীক্ষার ক্ষেত্রে ফলাফলের সাথে ভাল কাজ করেছে, এই কমিট স্ন্যাপশটটি ট্যাগ করা v1.0 হিসাবে।

সুতরাং, এখন আমরা আমাদের শেষ ভাল প্রতিশ্রুতিটি জানি, আসুন আমরা এই গিটারটিতে 'গিটার দ্বিখণ্ডিত' বিষয়ে এগিয়ে যাই এবং অ্যাপ্লিকেশনটি পরীক্ষা করি।

অ্যাপ্লিকেশন পরীক্ষা করুন

স্ক্রিপ্টটি চালান - $./scriptts/myApplication.sh[প্রথমবার পরীক্ষা করা]



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

খারাপ প্রতিশ্রুতি সনাক্তকরণ

খারাপ প্রতিশ্রুতিটির জন্য পরিদর্শন শুরু করতে, আপনি নীচের পদক্ষেপগুলি অনুসরণ করবেন:

  • দ্বিখণ্ডিত কমান্ড শুরু করুন :গিট দ্বিখণ্ডা শুরু
  • খারাপ কমিট আইডি উল্লেখ করুন: গিট বাইসেক্ট খারাপ হেডবাগিট বিসেক্ট সি 5 বি 3 সি 8
  • সর্বশেষ-জ্ঞাত-প্রতিশ্রুতিবদ্ধ আইডি উল্লেখ করুন: গিট বিসেক্ট ভাল ভি 1.0বাগিট বিসেক্ট 93859d8

এটি প্রতিশ্রুতিবদ্ধ ইতিহাসের পরিসীমাটিকে প্রায় ভাল মাঝামাঝি সময়ে ভাল এবং খারাপ কমিটের মধ্যে দ্বিখণ্ডিত করে যা আমাদের কমিট আইডিতে নিয়ে আসে: f61a7e8

সুতরাং, কমান্ডটি এই প্রতিশ্রুতিবদ্ধ আইডির মতোই প্রকল্পের সংস্করণটি পরীক্ষা করে দেখেছে। এখন, আসুন আমরা আবার আমাদের অ্যাপ্লিকেশন পরীক্ষা করি।

অ্যাপ্লিকেশন চালানোর জন্য কমান্ড : $./scriptts/myApplication.sh[দ্বিতীয়বার পরীক্ষা করা]


যেহেতু আবেদন পাস এই প্রতিশ্রুতিবদ্ধভাবে, এই প্রতিশ্রুতিটি অবশ্যই খারাপ প্রতিশ্রুতি নয়। সুতরাং, পরবর্তী, আপনাকে দ্বিখণ্ডিত কমান্ড - $ হিসাবে একইটি জানাতে হবে $গিট বিসেক্ট ভাল


এখন, এটি অনুসন্ধানের ফলাফলটিকে প্রথম শ্রেণীর প্রথমার্ধের মতো দেখানো হিসাবে সঙ্কুচিত করবে -


আপনার আবেদন আবার পরীক্ষা করুন - কমান্ড: $./scriptts/myApplication.sh[তৃতীয়বার পরীক্ষা করা]


সুতরাং, যেহেতু আমরা উপরের মতো ত্রুটি দেখছি, এটি একটি খারাপ অঙ্গীকার।

দ্বিখণ্ডিত কমান্ডটি জানতে দিন, চালান $গিট বাইসেক্ট খারাপ


এটি অনুসন্ধানকে আরও সঙ্কুচিত করে এবং আপনাকে সর্বশেষ নীল ঘেরা মাঝারি পুনর্বিবেচনায় নিয়ে আসে: a6ac769

সুতরাং, আমি একই কমান্ডটি ব্যবহার করে শেষবারের মতো আমার অ্যাপ্লিকেশনটি পরীক্ষা করেছি: $./scriptts/myApplication.sh[চতুর্থ বার পরীক্ষা করা]

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

কমান্ডটি চালান: গিট বাইসেক্ট খারাপ

খারাপ প্রতিশ্রুতি পাওয়া গেছে

এটি একমাত্র শেষ প্রতিশ্রুতিটি শেষ করেছে যা খারাপ-


সুতরাং আপনি জানেন এখানেই কোডটি ভেঙে গেছে। তারপর কি?

বাগটি কী ফাইল ছিল তা বুঝুন

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

আপনি যদি আরও ডিবাগ করতে চান তবে আপনার প্রয়োজন পড়া দ্য আইডি অবজেক্ট কমিট

আদেশ: গিট শো a6ac76994b3f6c7519204f910fc787b7928cf8ef

ডাবলকে কীভাবে ইনটকে রূপান্তর করতে হয়

এটি প্রতিশ্রুতিবদ্ধ অবজেক্টটি পড়বে এবং লগ বার্তা এবং পাঠ্যগত বিস্তৃত মুদ্রণ করবে।

প্রতিটি লেখক কীভাবে এবং কোন প্রতিশ্রুতিবদ্ধভাবে কোন লেখককে পরিবর্তন করেছিলেন তা বিশ্লেষণ করতে আপনি ‘গিট দোষ’ কমান্ডটি ব্যবহার করতে পারেন, কমান্ডটি এইভাবে চালান:গিট দোষ কোড / વિકાસ_nav.sh

অনুসন্ধান বন্ধ করুন

অনুসন্ধান বন্ধ করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

আদেশ: গিট দ্বিখণ্ডিত পুনরায় সেট করুন


সুতরাং, দ্বিখণ্ডিতকরণ প্রক্রিয়া বন্ধ হয়ে যায় এবং আপনি যে শাখা থেকে অনুসন্ধান শুরু করেছিলেন সেখানে ফিরে এসেছেন। এখন, পরবর্তী পদক্ষেপটি কোডটি ঠিক করা বা ডিবাগ করা।

কোড ঠিক করতে / ডিবাগ করবেন কীভাবে?

ঠিক আছে, বেশ কয়েকটি কাজের ক্ষেত্র রয়েছে যা আপনি এখন প্রকল্পটির বর্তমান অবস্থা ঠিক করতে করতে পেরেছিলেন যে আপনি যে প্রতিশ্রুতিটি প্রথম স্থানে বাগটি নিয়ে এসেছেন তা চিহ্নিত করে ফেলেছেন।
তবে, আপনি যদি একটি প্রতিশ্রুতি পরিবর্তন হয় ভাগ করা সংগ্রহস্থল এটা ভাল প্রত্যাবর্তন পরিবর্তন ব্যবহার করে ‘ গিট রিভার্ট ‘আদেশ।

কার্য: উল্লিখিত খারাপ প্রতিশ্রুতি দ্বারা সম্পাদিত পরিবর্তনগুলি প্রত্যাবর্তন করুন

আদেশ: গিট রিভার্ট a6ac769

ফলস্বরূপ, এই প্রতিশ্রুতিবদ্ধ পরিবর্তনগুলি ফিরিয়ে নেওয়া 2 টি কাজ করেছে:

  • এটি সর্বশেষ 3 টি যুক্ত লাইনগুলি (সবুজ রঙে নির্দেশিত) মুছে ফেলা হয়েছে এবং মুছে ফেলা লাইনটি (লাল বর্ণিত) ফিরিয়েছে। (a6ac769 এর বিপরীত)
  • রিভার্ট মেসেজের তথ্য দিয়ে একটি অতিরিক্ত কমিট তৈরি করেছে

'রিভার্ট কমান্ড আপনাকে মূল প্রতিশ্রুতি থেকে ফিরে আসা পরিবর্তনটি ট্র্যাক করাও সহজ করে তোলে'

ব্যবহার ‘শো’ আবার আদেশ করুন অবজেক্ট আইডি পড়তে, যেমন-

আদেশ: গিট শো 801f029

এখন, এগিয়ে যান এবং আবেদন পরীক্ষা। এটি সঠিকভাবে কার্যকর করা হবে।

আদেশ: $./scriptts/myApplication.sh

বিপরীতে, আপনি যদি ইতিহাস থেকে খারাপ প্রতিশ্রুতি মুছে ফেলতে চান:

  • আপনি ব্যবহার করতে পারেন ‘ গিট রিসেট 'সাথে কমান্ড--হার্ড'বিকল্প (যদিও ভাগ করা সংগ্রহস্থলে প্রস্তাবিত নয়)

  • ‘ব্যবহার করে একটি একক ফাইলের আগের সংস্করণটি পরীক্ষা করে দেখুনগিট চেকআউট‘আদেশ দিয়ে দাও’-‘বিকল্প।

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

‘মাস্টার’ শাখা আপডেট করুন

আমি যখন আমার ‘দেব’ শাখায় বাগটি স্থির করেছিলাম, আমি এখন এই পরিবর্তনটিকে ‘মাস্টার’ শাখায়ও মার্জ করতে পারি-

  • ‘মাস্টার’ এ স্যুইচ করুন, কমান্ড:গিট চেকআউট মাস্টার
  • ‘উত্স / মাস্টার’ থেকে ‘মাস্টার’ এ সাম্প্রতিক আপডেটগুলি টানুন, আদেশ দিন:গিট টান উত্স
  • ‘দেব’ পরিবর্তনগুলিকে মার্জ করুন, আদেশ দিন:গিট একত্রীকরণ দৈত্য

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

সংক্ষেপে বলতে গেলে, ‘গিট বিসেক্ট’ হ'ল একটি কার্যকর এবং দরকারী কমান্ড যা দ্রুত সনাক্ত দ্য কমিট আইডি যে প্রবর্তিত প্রতি দোষ একটি বিস্তৃত সাহায্যে আপনার চলমান কোড বাইনারি অনুসন্ধান যুক্তিযুক্তভাবে বিভাজক অর্ধেকের মধ্যে কমিট লগ ভাল এবং খারাপ প্রতিশ্রুতিবদ্ধ পরিসর । উপসংহারে, আপনি শিখেছি সনাক্ত ত্রুটিপূর্ণ প্রতিশ্রুতিবদ্ধ এবং প্রত্যাবর্তন এটি দ্বারা করা পরিবর্তন।

তদ্ব্যতীত, সাব কম্যান্ডগুলিতে ‘ভাল’ এবং ‘খারাপ’ আপনি পুনর্বিবেচনার অবস্থাটি বর্ণনা করতে নতুন ও পুরানো জাতীয় শব্দও ব্যবহার করতে পারেন। বিভিন্ন কমিট (শে -১) আইডি সনাক্ত করতে আপনি একাধিকবার বিভিন্ন সাব কম্যান্ড এবং সংশোধন / প্রতিশ্রুতি আইডি পাস করে কমান্ডটি চালাতে পারেন। বিকল্পভাবে, এই কমান্ডটি ব্যবহার করে ভাঙা কোডটি তৈরি করতে একটি স্বয়ংক্রিয় পরীক্ষার স্ক্রিপ্টও চালানো যেতে পারে। এছাড়াও, চালিয়ে এই আদেশের বিশদ বিবরণ সন্ধান করুনগিট বিসেক্ট - হেল্পটার্মিনালে। সুতরাং, লোকেদের সাথে আমরা গিট বিসেক্ট সম্পর্কিত এই নিবন্ধটি শেষ করেছি।

জাভা তালিকার বৃহত্তম সংখ্যা খুঁজে

দলের মধ্যে বৃহত্তর যোগাযোগ ও সহযোগিতার আমন্ত্রণ জানাতে ডিভোপসের উদ্দেশ্যটি আরও দ্রুত এবং আরও নির্ভরযোগ্যতার সাথে আরও উন্নত মানের সফ্টওয়্যার তৈরি করা। আপনি যদি এই নিবন্ধটি দ্বারা আগ্রহী হন, গ হ্যাক আউট এডুরেকা, বিশ্বস্ত জুড়ে 250,000 এরও বেশি সন্তুষ্ট শিক্ষার্থীর নেটওয়ার্ক সহ একটি বিশ্বস্ত অনলাইন লার্নিং সংস্থা by এডুরেকা ডিভোপস শংসাপত্র প্রশিক্ষণ কোর্সটি ডিওওপ্স কী তা বুঝতে এবং এসডিএলসিতে একাধিক পদক্ষেপ স্বয়ংক্রিয় করার জন্য পুতুল, জেনকিনস, নাগিস, উত্তর, শেফ, সালটস্যাক এবং জিআইটি-র মতো ডিভোপস প্রক্রিয়া এবং সরঞ্জামগুলিতে দক্ষতা অর্জনে সহায়তা করে।

আমাদের জন্য একটি প্রশ্ন আছে? দয়া করে এটি 'গিট বিসেক্ট' নিবন্ধের মন্তব্য বিভাগে উল্লেখ করুন এবং আমরা আপনাকে তত্ক্ষণাতিত্বরূপ ফিরিয়ে দেব।