গিট ডিফ কমান্ড দুটি কমিটের ফাইলের মধ্যে বা আপনার বর্তমান সংগ্রহস্থল এবং পূর্ববর্তী কমিটের মধ্যে পার্থক্য দেখায়। এই কমান্ডটি পরিবর্তিত ফাইলগুলির জন্য শিরোনাম এবং মেটাডেটা দ্বারা পরিবর্তনগুলি নির্দেশ করে৷
আপনি যখন গিট সংস্করণ নিয়ন্ত্রণ সিস্টেমের সাথে কাজ করছেন, তখন আপনি অন্য ডেটা উত্সের সাথে আপনার সংগ্রহস্থলের ডেটা তুলনা করতে চাইতে পারেন। উদাহরণস্বরূপ, আপনি একে অপরের সাথে দুটি ভিন্ন কমিট বা দুটি ফাইল তুলনা করতে চাইতে পারেন।
এখানেই ডিফ ফাংশনটি আসে। ডিফিং হল একটি ফাংশন যা দুটি ইনপুট গ্রহণ করে এবং সেই ডেটা উত্সগুলির মধ্যে বিদ্যমান পরিবর্তনগুলি উপস্থাপন করে। ডিফ ফাংশনগুলি শাখা, ফাইল এবং কমিটগুলিতে কার্যকর করা যেতে পারে।
এই টিউটোরিয়ালটি উদাহরণ সহ আলোচনা করবে, গিট-এর সাথে পার্থক্য করার মূল বিষয়গুলি এবং কীভাবে গিট ডিফ কমান্ড ব্যবহার করতে হয়। এই টিউটোরিয়ালটি পড়ার শেষে, আপনি গিট ডিফ কমান্ড ব্যবহারে একজন বিশেষজ্ঞ হয়ে উঠবেন।
গিট ডিফ কমান্ড
git diff কমান্ড দুটি কমিট বা একটি কমিট এবং আপনার বর্তমান সংগ্রহস্থলের মধ্যে ফাইলগুলির মধ্যে পার্থক্য প্রদর্শন করে। আপনি দেখতে পারেন কোন ফাইলে কোন টেক্সট যোগ করা হয়েছে, কি থেকে সরানো হয়েছে এবং পরিবর্তন করা হয়েছে।
এখানে git diff কমান্ডের সিনট্যাক্স রয়েছে:
git diff
ডিফল্টরূপে, git diff কমান্ড আপনার সংগ্রহস্থলে যেকোন অনিয়মিত পরিবর্তন প্রদর্শন করে।
আমরা আমাদের আসল ফাইল থেকে সরানো লাইনগুলি দেখতে পারি সেইসাথে আমাদের আসল ফাইলে যোগ করা বা পরিবর্তিত যেকোনো লাইন দেখতে পারি। প্রায়শই, গিট ডিফ একটি গিট রিপোজিটরিতে শাখা তুলনা করার জন্য ব্যবহৃত হয়।
81% অংশগ্রহণকারী বলেছেন যে তারা বুটক্যাম্পে যোগ দেওয়ার পরে তাদের প্রযুক্তিগত কাজের সম্ভাবনা সম্পর্কে আরও আত্মবিশ্বাসী বোধ করেছেন। আজই একটি বুটক্যাম্পের সাথে মিলিত হন৷
৷গড় বুটক্যাম্প গ্র্যাড একটি বুটক্যাম্প শুরু করা থেকে শুরু করে তাদের প্রথম চাকরি খোঁজা পর্যন্ত ক্যারিয়ারের পরিবর্তনে ছয় মাসেরও কম সময় ব্যয় করেছে।
কমিটের মধ্যে পার্থক্য করুন
আপনি দুটি গিট কমিটের মধ্যে ফাইলের তুলনা করতে পারেন রেফের নাম উল্লেখ করে যা আপনি তুলনা করতে চান এমন কমিটকে নির্দেশ করে। একটি রেফ একটি কমিট আইডি বা HEAD হতে পারে, যা বর্তমান শাখাকে নির্দেশ করে৷
৷git diff
আসুন আমাদের গিট রিপোজিটরিতে দুটি কমিট তুলনা করি।
এটি করার জন্য, আপনাকে প্রথমে সেই কমিটগুলির আইডি পুনরুদ্ধার করতে হবে যার ফাইলগুলি আপনি তুলনা করতে চান৷ আপনি git log –pretty=oneline কমান্ড ব্যবহার করে এই কাজটি সম্পন্ন করতে পারেন, যা একটি রেপোতে সমস্ত কমিটের একটি সংক্ষিপ্ত সারাংশ প্রদান করে:
গিট লগ --pretty=oneline
এই কমান্ডটি ফিরে আসে:
5141ea9c41cdc7152408bfcab54a910f34441855 (HEAD ->; master) feat:Update README.md749055ee99df2aa6f5adc4cbe4bfc708395f1708395fcdmre:Createএখন, ধরুন আমরা এই দুটি কমিট তুলনা করতে চাই। আমরা এই কমান্ডটি ব্যবহার করে তা করতে পারি:
git diff 5141ea9c41cdc7152408bfcab54a910f34441855 749055ee99df2aa6f5adc4cbe4bfc708395f1c2eউপরের কমান্ডটি আমাদের দুটি কমিট জুড়ে একটি ভিন্ন অপারেশন করবে।
শাখার মধ্যে গিট ডিফ
ডিফ কমান্ড ব্যবহার করে দুটি গিট শাখার তুলনা করতে, আপনি যে দুটি শাখাকে আর্গুমেন্ট হিসাবে তুলনা করতে চান তা নির্দিষ্ট করুন। আপনাকে প্রতিটি শাখার নামের মধ্যে দুটি বিন্দু ব্যবহার করতে হবে। এই বিন্দুগুলি নির্দেশ করে যে আপনি প্রতিটি শাখার সর্বশেষ প্রতিশ্রুতি পড়তে চান এবং তাদের তুলনা করতে চান:
git diff.. ধরুন আমরা আমাদের সংগ্রহস্থলে "dev-v0.9" নামক একটি শাখার সাথে "মাস্টার" শাখার তুলনা করতে চাই। আমরা এই কমান্ডটি ব্যবহার করে তা করতে পারি:
git diff master dev-v0.9এই কমান্ডটি কার্যকর করা হলে, আমাদের কোডবেসের "মাস্টার" এবং "dev-v0.9" শাখাগুলির মধ্যে একটি পার্থক্য চালানো হবে৷
একইভাবে, আপনি দুটি ভিন্ন শাখা জুড়ে নির্দিষ্ট ফাইল তুলনা করতে পারেন। এটি করার জন্য, আপনি উপরের মত একই সিনট্যাক্স ব্যবহার করতে পারেন এবং অতিরিক্তভাবে আপনি যে ফাইলটি তুলনা করতে চান তা নির্দিষ্ট করতে পারেন৷
ধরুন আমরা আমাদের “master” এবং “dev-v0.9” শাখা জুড়ে README.md ফাইলের তুলনা করতে চেয়েছিলাম। আমরা এই কোডটি ব্যবহার করে তা করতে পারি:
git diff master dev-v0.9 ./README.mdএটি README.md ফাইলের তুলনা করবে (যা আমাদের বর্তমান ডিরেক্টরিতে, "./" সিনট্যাক্স দ্বারা চিহ্নিত) "মাস্টার" এবং "dev-v0.9" শাখা জুড়ে৷
গিট ডিফ কমান্ডের উদাহরণ
ধরা যাক আমরা একটি ফাঁকা সংগ্রহস্থল শুরু করেছি, এবং আমরা একটি README.md ফাইল দিয়ে আমাদের সংগ্রহস্থল শুরু করতে চাই। আমরা আমাদের সংগ্রহস্থলে একটি README.md ফাইল তৈরি করেছি যাতে নিম্নলিখিত বাক্যটি রয়েছে:
এটি গিট ডিফ বৈশিষ্ট্যের একটি উদাহরণ।
ফাইল এবং প্রতিশ্রুতি প্রস্তুত করুন
আমরা গিট কমিট কমান্ড ব্যবহার করে এই ফাইলটির সাথে একটি কমিট তৈরি করতে যাচ্ছি:
গিট কমিটএটি আমাদের সংগ্রহস্থলে করা পরিবর্তনগুলি সংরক্ষণ করতে দেয়। গিট কমান্ড রিটার্ন করে:
[master (root-commit) 749055e] ডক্স:README.md1 ফাইল তৈরি করুন পরিবর্তিত, 1 সন্নিবেশ(+) মোড তৈরি করুন 100644 README.mdযদি আমরা এই পর্যায়ে git diff কমান্ড চালাই, কিছুই হবে না। এর কারণ হল আমাদের সংগ্রহস্থল শুরু করা হয়েছে, এবং আমাদের সংগ্রহস্থলে কোনো ফাইলের মধ্যে কোনো পরিবর্তন নেই। এখন যেহেতু আমাদের একটি মৌলিক সংগ্রহস্থল রয়েছে, আমরা আমাদের রেপোতে ফাইলগুলির বিষয়বস্তু পরিবর্তন করতে পারি। এটি আমাদের git diff কমান্ডকে কার্যে দেখতে অনুমতি দেবে।
ধরুন আমরা বাক্যটি যোগ করতে চাই "আমরা এই লাইনটি আমাদের ফাইলে যোগ করেছি।" README.md ফাইলে। আমরা এই কমান্ডটি ব্যবহার করে তা করতে পারি:
echo "আমরা এই লাইনটি আমাদের ফাইলে যোগ করেছি।">> README.mdউপরের কমান্ডটি README.md ফাইলে আমাদের বাক্য যোগ করে।
এর মানে হল এখন আমাদের প্রাথমিক README.md ফাইল এবং আমাদের সংগ্রহস্থলে বর্তমান README.md ফাইলের মধ্যে পার্থক্য রয়েছে৷
git diff কমান্ড কার্যকর করার মাধ্যমে, আমরা এই দুটি ফাইলের মধ্যে পার্থক্য দেখতে পারি। ডিফল্টরূপে, git diff কমান্ড সর্বশেষ প্রতিশ্রুতি এবং সংগ্রহস্থলের বর্তমান অবস্থার মধ্যে সমস্ত ফাইলের জন্য একটি পার্থক্য তৈরি করে।
কমিটের মধ্যে একটি গিট ডিফ চালান
যখন আমরা কমান্ড চালাই, নিম্নলিখিত প্রতিক্রিয়াটি ফিরে আসে:
diff --git a/README.md b/README.mdindex f808522..f08e544 100644--- a/README.md+++ b/README.md@@ -1 +1,2 @@+আমরা এইমাত্র যোগ করেছি এই লাইনটি আমাদের ফাইলে।এটি গিট ডিফ বৈশিষ্ট্যের একটি উদাহরণ।
এটি git diff কমান্ড থেকে একটি সাধারণ ফলাফল। আমাদের ফলাফল একটি সম্মিলিত ভিন্ন বিন্যাসে আমাদের ফাইলে কী যুক্ত বা সরানো হয়েছে তা দেখায়৷
git diff কমান্ড আমাদের শেষ কমিট এবং আমাদের বর্তমান সংগ্রহস্থলের মধ্যে সমস্ত ফাইলের সমস্ত পরিবর্তনের একটি তালিকা প্রদান করে৷
আপনি যদি একটি রিপোজিটরিতে একটি নির্দিষ্ট ফাইলে করা পরিবর্তনগুলি পুনরুদ্ধার করতে চান, আপনি সেই ফাইলটিকে তৃতীয় প্যারামিটার হিসাবে উল্লেখ করতে পারেন। ধরুন আমরা শুধুমাত্র README.md ফাইলে করা পরিবর্তনগুলি দেখতে চাই।
এই উদাহরণে, আমরা শুধুমাত্র README.md ফাইলটি পরিবর্তন করেছি, তাই শুধুমাত্র সেই পরিবর্তনগুলি দেখানো হবে। কিন্তু যদি আমরা একটি বৃহত্তর রেপোর সাথে কাজ করতাম, আমরা শুধুমাত্র একটি ফাইলের পরিবর্তনগুলি তুলনা করতে চাই। এটি করার জন্য, আমরা এই কমান্ডটি ব্যবহার করতে পারি:
git diff README.mdএই কমান্ডটি আমাদের README.md ফাইলের বর্তমান সংস্করণকে আমাদের সংগ্রহস্থলে প্রতিশ্রুতিবদ্ধ সর্বশেষ সংস্করণের সাথে তুলনা করতে দেয়৷
গিট ডিফ ব্রেকডাউন
Git diffs-এ অনেকগুলি উপাদান রয়েছে যা আমরা একটি সংগ্রহস্থলের একটি ফাইলের মধ্যে পরিবর্তনগুলি বিশ্লেষণ করতে ব্যবহার করতে পারি। আমাদের আগের উদাহরণের রেফারেন্স দিয়ে আসুন সেগুলিকে ভেঙে ফেলি।
ইনপুট ফাইলগুলি
আমাদের পার্থক্যের প্রথম উপাদান হল ইনপুট ফাইল . পার্থক্যের এই অংশটি আমাদের বলে যে কোন ফাইলের সাথে পার্থক্যের সাথে তুলনা করা হচ্ছে।
আমরা আমাদের কোডের বর্তমান সংস্করণের README.md ফাইলটিকে আমাদের কোডের শেষ সংস্করণের README.md ফাইলের সাথে তুলনা করছি৷ এটি আমাদের কোডের প্রথম লাইনে বলা হয়েছে:
diff --git a/README.md b/README.mdমেটাডেটা
এরপরে, আমাদের ডিফটিতে মেটাডেটা রয়েছে আমাদের গিট সংগ্রহস্থলের জন্য। এই মেটাডেটা আপনার ফাইলে করা পরিবর্তনগুলি ট্র্যাক করতে গিট দ্বারা ব্যবহৃত অবজেক্ট সংস্করণ লেবেলগুলি প্রদর্শন করে৷
ডিফ কমান্ডের বেশিরভাগ ক্ষেত্রে এই তথ্যটি খুব কমই ব্যবহৃত হয়। আমাদের উপরের উদাহরণে, মেটাডেটা এইরকম দেখাচ্ছে:
সূচী f808522..f08e544 100644মার্কার পরিবর্তন করুন
গিট ডিফ আউটপুটের পরবর্তী অংশ হল চেঞ্জ মার্কার . এই ফাইল প্যাটার্ন মার্কারগুলি আমাদের জানায় যে আমাদের ফাইলগুলিতে কী ধরনের পরিবর্তন করা হয়েছে। আমাদের উপরের উদাহরণের জন্য পরিবর্তন চিহ্নিতকারী হল:
--- a/README.md+++ b/README.mdএই মার্কারগুলি আমাদের বলে যে a/README.md থেকে পরিবর্তনগুলি করা হয়েছে (বিয়োগ চিহ্ন দ্বারা চিহ্নিত), যা b/README.md এ প্রতিফলিত হয় (প্লাস চিহ্ন দ্বারা বোঝায়)।
কোড পরিবর্তন
অবশেষে, আমাদের পার্থক্য আমাদের কোডে করা পরিবর্তনের একটি তালিকা প্রদান করে . সম্পূর্ণ ফাইল তুলনার বিপরীতে, ডিফগুলি শুধুমাত্র পরিবর্তন করা ফাইলের বিভাগগুলি দেখায়। আমাদের উদাহরণে, আমরা আমাদের ফাইলে একটি লাইন যোগ করেছি, যা নিম্নোক্ত ফলাফল প্রদান করেছে:
@@ -1 +1,2 @@ এটি গিট ডিফ বৈশিষ্ট্যের একটি উদাহরণ৷+আমরা এই লাইনটি আমাদের ফাইলে যোগ করেছি৷প্রথম লাইনটি আমাদের ফাইলে করা পরিবর্তনগুলির একটি সারাংশ। এটি আমাদের বলে যে আমরা দ্বিতীয় লাইন (2) থেকে শুরু করে আমাদের ফাইল (+1) এ কোডের একটি লাইন যোগ করেছি।
তারপরে, আমাদের করা পরিবর্তনগুলির একটি তালিকা দেখানো হয়। আপনি দেখতে পাচ্ছেন, কারণ আমরা লাইন যোগ করেছি "আমরা এই লাইনটি আমাদের ফাইলে যোগ করেছি।", সেই লাইনটি আমাদের পার্থক্যে উপস্থিত হয়। প্লাস চিহ্ন আমাদের বলে যে আমরা ফাইলটিতে সেই লাইনটি যোগ করেছি।
উপসংহার
ডিফিং হল গিট-এ একটি দরকারী ফাংশন যা আপনাকে গিট রিপোজিটরিতে দুটি ফাইল, শাখা বা কমিট তুলনা করতে দেয়। এটি আপনাকে আপনার সংগ্রহস্থলের একটি নির্দিষ্ট বিন্দু থেকে কী পরিবর্তন করা হয়েছে তা দেখতে দেয়৷
এই টিউটোরিয়ালটি Git-এর সাথে পার্থক্য করার মূল বিষয়গুলি এবং কীভাবে একটি ডিফ অপারেশন করতে গিট ডিফ কমান্ড ব্যবহার করতে হয় তা নিয়ে আলোচনা করা হয়েছে। এখন আপনি একজন বিশেষজ্ঞের মতো গিট ডিফ কমান্ড ব্যবহার শুরু করার জন্য প্রয়োজনীয় জ্ঞান দিয়ে সজ্জিত!
গিট-এ আরও শেখার সংস্থানগুলির জন্য, আমাদের কীভাবে গিট শিখবেন নির্দেশিকা দেখুন৷
৷