আগের পর্বে আমরা শিখেছি কীভাবে একটি Git repository তৈরি করতে হয় এবং
git add,
git commit
দিয়ে পরিবর্তন সংরক্ষণ করতে হয়।
কিন্তু commit করার পর সেই history দেখব কীভাবে? আর যদি কোনো ভুল হয়ে যায়, তাহলে আগের অবস্থায় কীভাবে ফিরে যাব? আজকের পর্বে আমরা ঠিক এই বিষয়গুলোই শিখব।
Commit History দেখা — git log
তোমার repository-তে এতদিন যত commit করেছ, সেগুলোর সম্পূর্ণ history দেখতে ব্যবহার করা হয়:
git log
এই command চালালে প্রতিটি commit-এর জন্য দেখতে পাবে:
- Commit-এর একটি unique ID (hash)
- কে commit করেছে (author)
- কখন commit করা হয়েছে (date)
- Commit message
History-টা যদি এক লাইনে সংক্ষেপে দেখতে চাও, তাহলে ব্যবহার করতে পারো:
git log --oneline
এতে প্রতিটি commit শুধু ছোট hash আর message আকারে একলাইনে দেখাবে, ফলে পুরো history-টা এক নজরে দেখা সহজ হয়।
a1b2c3d Fix login button alignment e4f5g6h Add navbar to homepage i7j8k9l Initial commit
পরিবর্তন তুলনা করা — git diff
কোনো file-এ ঠিক কী পরিবর্তন হয়েছে সেটা দেখতে ব্যবহার করা হয়
git diff।
যদি তুমি কোনো file পরিবর্তন করো কিন্তু এখনো
git add
না করে থাকো, তাহলে working directory আর সর্বশেষ commit-এর মধ্যে পার্থক্য
দেখতে চালাও:
git diff
এই command চালালে যে line-গুলো মুছে ফেলা হয়েছে সেগুলো
-
চিহ্ন দিয়ে (লাল রঙে) এবং নতুন যোগ হওয়া line-গুলো
+
চিহ্ন দিয়ে (সবুজ রঙে) দেখানো হয়।
যদি ইতিমধ্যে git add
করে ফেলেছ, তাহলে staged পরিবর্তন দেখতে ব্যবহার করো:
git diff --staged
পুরনো Version-এ ফিরে যাওয়া — git restore
ধরো তুমি একটি file পরিবর্তন করলে, কিন্তু এখনো commit করোনি। এখন মনে হলো এই পরিবর্তনটা রাখতে চাও না — আগের অবস্থায় ফিরে যেতে চাও। তখন ব্যবহার করো:
git restore index.html
এই command চালালে index.html
file-টি সর্বশেষ commit-এর অবস্থায় ফিরে যাবে, অর্থাৎ তোমার এখন পর্যন্ত করা
পরিবর্তন মুছে যাবে।
সতর্কতা: এই command চালালে uncommitted পরিবর্তন স্থায়ীভাবে হারিয়ে যায়, তাই সাবধানে ব্যবহার করবে।
যদি কোনো file ভুলবশত staging area-তে যোগ হয়ে যায় (git add করা হয়ে গেছে), কিন্তু commit করতে চাও না, তাহলে সেটাকে unstage করতে পারো:
git restore --staged index.html
এতে file-টি staging area থেকে সরে যাবে, কিন্তু working directory-তে তোমার করা পরিবর্তন অক্ষত থাকবে।
পুরনো Commit-এর file দেখা — git checkout
কখনো কখনো তুমি জানতে চাইবে কোনো নির্দিষ্ট পুরনো commit-এ একটি file কেমন
ছিল। এজন্য প্রথমে git log --oneline
দিয়ে commit hash খুঁজে নাও, তারপর চালাও:
git checkout a1b2c3d -- index.html
এখানে a1b2c3d
হলো commit hash। এই command চালালে index.html
file-টি সেই নির্দিষ্ট commit-এর অবস্থায় ফিরে আসবে, তবে বাকি file-গুলো
অপরিবর্তিত থাকবে।
সর্বশেষ Commit ঠিক করা — git commit --amend
অনেক সময় commit করার পরপরই বুঝতে পারো message-এ ভুল ছিল, বা কোনো file যোগ করতে ভুলে গেছ। এমন ক্ষেত্রে পুরো নতুন commit না করে amend করা যায়।
শুধু commit message ঠিক করতে চাইলে:
git commit --amend -m "Correct commit message"
আর যদি কোনো file যোগ করতে ভুলে গিয়ে থাকো, তাহলে আগে সেই file stage করো, তারপর amend করো:
git add forgotten-file.html git commit --amend --no-edit
এখানে --no-edit
দিলে আগের commit message অপরিবর্তিত থাকবে, শুধু file-টি সর্বশেষ commit-এ
যুক্ত হবে।
সতর্কতা: শুধুমাত্র সর্বশেষ commit amend করা নিরাপদ। GitHub-এ push করা commit amend করলে জটিলতা তৈরি হতে পারে — এই বিষয়ে বিস্তারিত জানব পরবর্তী পর্বগুলোতে।
আজকের কমান্ডগুলো এক নজরে
git log → পুরো history দেখা git log --oneline → সংক্ষিপ্ত history দেখা git diff → uncommitted পরিবর্তন দেখা git diff --staged → staged পরিবর্তন দেখা git restore ফাইলের-নাম → পরিবর্তন বাতিল করা git restore --staged ফাইলের-নাম → unstage করা git checkout hash -- ফাইলের-নাম → পুরনো version-এ ফেরা git commit --amend → সর্বশেষ commit ঠিক করা
Practice Task
এখন নিজে হাতে নিচের কাজগুলো করে দেখো:
- আগের পর্বের project folder-এ গিয়ে
git log --onelineচালিয়ে history দেখো। - একটি file-এ পরিবর্তন করে (commit না করে)
git diffচালিয়ে পার্থক্য দেখো। git restoreদিয়ে সেই পরিবর্তন বাতিল করো।- একটি নতুন commit করে, তারপর
git commit --amendদিয়ে message ঠিক করে দেখো।
আজ আমরা শিখলাম কীভাবে Git-এর history দেখতে হয়, পরিবর্তন তুলনা করতে হয়, এবং
ভুল হলে কীভাবে আগের অবস্থায় ফিরে যেতে হয়। পরের পর্বে আমরা শিখব
.gitignore
ব্যবহার করে কোন file track করা উচিত না তা ঠিক করা, এবং একটি ভালো
README.md
কীভাবে লিখতে হয়।