ইতিহাস পড়া: log, diff, show এবং অতীতে নেভিগেশন
প্রকল্পের ইতিহাস শুধু একটি লগ নয়, এটি সিদ্ধান্তের ডকুমেন্টেশন। চলুন ইতিহাস তথ্যপূর্ণভাবে পড়তে শিখি: কমিট ফিল্টার করা, সংস্করণগুলোর মধ্যে কী পরিবর্তন হয়েছে তা দেখা এবং SHA-1 হ্যাশ বুঝতে ভয় না পাওয়া। আলাদাভাবে আলোচনা করব 'ভালো ইতিহাস' এবং 'আবর্জনা ইতিহাস' এর পার্থক্য—এটি সরাসরি প্রভাব ফেলে কিভাবে আপনাকে দলে দেখা হবে।
- আপনি রিপোজিটরির ইতিহাস পড়তে এবং লেখক, তারিখ বা কীওয়ার্ড অনুযায়ী দ্রুত প্রয়োজনীয় কমিট খুঁজে পেতে সক্ষম হবেন।
- আপনি বুঝতে পারবেন কিভাবে বিভিন্ন স্তরে ফাইলের সংস্করণ তুলনা করতে হয়: ওয়ার্কিং ডিরেক্টরি, ইনডেক্স, কমিট।
- আপনি শিল্পের স্বীকৃত মানদণ্ড (Conventional Commits) অনুযায়ী কমিট বার্তা লিখতে শিখবেন।
จุดเริ่มต้นของบทเรียน
কমিটের ইতিহাস: প্রকল্পের ডায়েরি
- Git log ইতিহাস দেখায় উল্টো ডায়েরির মতো
- প্রতিটি এন্ট্রি পরিবর্তনের একটি স্ন্যাপশট
- এটি সংরক্ষণ করে কে, কখন এবং কী পরিবর্তন করেছে
- কোডের বিবর্তন দেখতে সাহায্য করে
ধরুন, প্রতিবার যখন আপনি গিট-এ পরিবর্তন সংরক্ষণ করেন, আপনি ডেভেলপমেন্ট ডায়েরিতে একটি এন্ট্রি লিখছেন। 'গিট লগ' কমান্ড এই এন্ট্রিগুলো উল্টো কালানুক্রমে দেখায় — সবচেয়ে নতুন থেকে পুরনো। এই ডায়েরিতে প্রকল্পের সম্পূর্ণ কালপঞ্জি সংরক্ষিত থাকে: কে, কখন এবং কী পরিবর্তন করেছে। এটি শুধু পরিবর্তনের তালিকা নয়, বরং আপনার কোডের বিবর্তনের একটি জীবন্ত ইতিহাস। এই ইতিহাস পড়া এবং বিশ্লেষণ করার দক্ষতা টিমে কাজ করার জন্য অত্যন্ত গুরুত্বপূর্ণ। কারণ কমিটের ইতিহাসের মাধ্যমেই আপনি দেখতে পান কিভাবে প্রকল্প বিকশিত হয়েছে, কী সিদ্ধান্ত নেওয়া হয়েছে এবং কেন। আসুন একটি কমিটের গঠন বিস্তারিত দেখি।
কমিটের এন্ট্রি পড়া: হ্যাশ, লেখক, তারিখ
- commit: অনন্য হ্যাশ-আইডেন্টিফায়ার
- Author: কে এবং কখন পরিবর্তন করেছে
- Date: কমিটের টাইমস্ট্যাম্প
- মেসেজ: কী পরিবর্তন করা হয়েছে
'গিট লগ' কমান্ডের আউটপুট দেখুন। প্রতিটি এন্ট্রি অক্ষরের একটি লম্বা লাইন দিয়ে শুরু হয় — এটি কমিটের হ্যাশ, এর অনন্য আইডেন্টিফায়ার। তার ডানদিকে আপনি পরিবর্তনের লেখক এবং তারিখ দেখতে পান। নিচে কমিটের মেসেজ রয়েছে, যা ডেভেলপার পরিবর্তন সংরক্ষণ করার সময় লিখেছিল। ফর্ম্যাটটি লক্ষ্য করুন: প্রথমে লেখকের ইমেল ঠিকানা কৌণিক ব্র্যাকেটে, তারপর টাইমস্ট্যাম্প। এই তথ্য পরিবর্তনের প্রসঙ্গ বুঝতে এবং প্রয়োজনে লেখকের সাথে যোগাযোগ করতে সাহায্য করে। এখন যেহেতু আমরা কমিটের গঠন বুঝেছি, আসুন জেনে নিই হ্যাশ কী এবং কেন এটি প্রয়োজন।
#!/bin/bash
cd ~/projects/git-course/
git log -1 --pretty=format:'commit %H%nAuthor: %an <%ae>%nDate: %ad%n%n %s'
কমিটের হ্যাশ — ইতিহাসের চাবি
- হ্যাশ হল কমিটের ডিজিটাল ফিঙ্গারপ্রিন্ট
- এটি বিষয়বস্তু এবং মেটাডেটার উপর নির্ভর করে
- একটি ক্যারেক্টার পরিবর্তন করলেও হ্যাশ বদলে যায়
- যেকোনো সংস্করণে সঠিকভাবে রেফারেন্স দিতে দেয়
কমিটের হ্যাশ এলোমেলো অক্ষরের সেট নয়, বরং একটি ক্রিপ্টোগ্রাফিক ফাংশনের ফল যা কমিটের বিষয়বস্তুকে একটি অনন্য স্ট্রিংয়ে রূপান্তর করে। কমিটে একটি বাইট পরিবর্তন করলেও হ্যাশ সম্পূর্ণ বদলে যায়। এটি পরিবর্তনের ইতিহাসের অখণ্ডতা নিশ্চিত করে। হ্যাশ জেনে, আপনি যেকোনো কোড ভার্সনে পৌঁছাতে পারেন, যেমন বইয়ে বুকমার্ক। উদাহরণস্বরূপ, 'গিট চেক-আউট' কমান্ড হ্যাশ সহ আপনাকে সেই কমিটের সময় প্রকল্পের অবস্থায় নিয়ে যায়। এটি বিশেষভাবে উপযোগী যখন পরিবর্তনগুলি ফিরিয়ে নিতে বা নির্দিষ্ট বাগ কখন দেখা দিয়েছে তা বিশ্লেষণ করতে হয়। এখন যেহেতু আমরা ইতিহাসের গঠন বুঝি, আসুন এটি ফিল্টার করতে শিখি — বাস্তব প্রকল্পে হাজার হাজার কমিট থাকতে পারে।
บทเรียนฉบับเต็มใช้ได้เมื่อสมัครสมาชิก
ฉบับเต็มมีสไลด์เพิ่มอีก 26 สไลด์
วิดีโอ สไลด์ทั้งหมด โน้ต แบบทดสอบ AI ติวเตอร์ และการสัมภาษณ์จะเปิดหลังเข้าสู่ระบบและสมัครสมาชิก
เข้าสู่ระบบหรือลงทะเบียน สมัครสมาชิกเนื้อหาบทเรียน
- কমিটের ইতিহাস: প্রকল্পের ডায়েরি
- কমিটের এন্ট্রি পড়া: হ্যাশ, লেখক, তারিখ
- কমিটের হ্যাশ — ইতিহাসের চাবি
- লেখকের কমিট কীভাবে খুঁজবেন
- তারিখ অনুযায়ী কমিট ফিল্টার
- কমিটের টেক্সট অনুসন্ধান
- ফিল্টার একত্রিত করা
- কমিটের ইতিহাস পড়ার সমস্যা
- কমপ্যাক্ট ডিসপ্লে --oneline সহ
- ভিজুয়ালাইজেশন --graph সহ
- সম্পূর্ণ চিত্র --all সহ
- git diff কী এবং কেন এটি প্রয়োজন
- ওয়ার্কিং ডিরেক্টরিতে পরিবর্তন তুলনা
- কমিটের জন্য কী প্রস্তুত: git diff --staged
- যেকোনো দুটি কমিট তুলনা
- কীভাবে একটি নির্দিষ্ট কমিট বিস্তারিতভাবে দেখা যায়
- অনুশীলন: কমিটে পরিবর্তন দেখা
- কমিটে একটি নির্দিষ্ট ফাইল দেখা
- ফাইলের সাম্প্রতিক পরিবর্তনগুলি সন্ধান করা
- ইতিহাসের মাধ্যমে অন্যের কোড বিশ্লেষণ
- ফাংশনের সংযোজন বা অপসারণ সন্ধান করা
- কমিট বার্তা কেন গুরুত্বপূর্ণ
- আদর্শ কমিট বার্তার গঠন
- কনভেনশনাল কমিটেস ইন প্র্যাকটিস
- খারাপ কমিটের রিফ্যাক্টরিং
- কেন 'fix' কমিটগুলি অ্যান্টিপ্যাটার্ন
- পরিবর্তনের পারমাণবিকতা: একটি কমিট - একটি কাজ
- git add -p: পরিষ্কার কমিটের জন্য জীবন রক্ষাকারী টুল
- সারাংশ এবং অ্যাসাইনমেন্ট
บทความเกี่ยวกับบทเรียนนี้
- คำสั่ง Git: ชีตสรุปพร้อมตัวอย่างสำหรับใช้ทุกวัน
- git log, diff, show และ blame: วิธีอ่านประวัติโปรเจกต์ใน Git
- git bisect: วิธีค้นหาคอมมิตที่ทำให้โค้ดพัง
- Git และ GitHub: ต่างกันอย่างไร และเชื่อมโยงกันอย่างไร
- วิธีติดตั้ง Git บน Windows, macOS และ Linux
บทเรียนทั้งหมดในคอร์สนี้
- গিটের ভূমিকা: শুরু থেকে আত্মবিশ্বাসী ডেভেলপার পর্যন্ত
- কেন আদৌ Git প্রয়োজন — এবং কেন এটি ছাড়া চাকরি পাওয়া যায় না
- ইনস্টল এবং কনফিগারেশন: প্রথম চালানোর জন্য Git প্রস্তুত করা
- প্রথম রিপোজিটরি: init, add, commit এবং ইনডেক্সের যাদু
- ইতিহাস পড়া: log, diff, show এবং অতীতে নেভিগেশন
- শাখা: আপনার কোডের সমান্তরাল বাস্তবতা
- ভুল বাতিল: restore, reset, revert — সঠিক ও বিপজ্জনক ব্যবহার
- গিটহাব ও দূরবর্তী রিপোজিটরি: আপনার কোড ক্লাউডে
- দলগত কাজ: ফর্ক, ফিচার ব্রাঞ্চ এবং পুল রিকোয়েস্ট
- মার্জ কনফ্লিক্ট: আতঙ্কিত না হয়ে বুঝুন এবং সমাধান করুন
- বাস্তব দলে গিট প্রক্রিয়া: কোন ওয়ার্কফ্লো বেছে নেবেন
- উন্নত টুল: রিবেস, স্ট্যাশ, চেরি-পিক এবং ট্যাগ
- চূড়ান্ত প্রকল্প: বাস্তব দলগত উন্নয়ন সিমুলেশন