git status বনাম git log
git status — বর্তমান অবস্থা দেখায়। অর্থাৎ working directory আর staging area-তে এখন কী চলছে: কোন ফাইল modified হয়েছে, কোনগুলো staged আছে, কোনগুলো untracked, আর আপনি কোন branch-এ আছেন। এটা ভবিষ্যতের commit-এর প্রস্তুতি দেখায়।
git log — অতীতের ইতিহাস দেখায়। অর্থাৎ এখন পর্যন্ত যত commit হয়েছে তার তালিকা: কে করেছে, কখন করেছে, commit message কী ছিল, commit hash কী।
সহজভাবে বললে: git status হলো "এখন কী হচ্ছে", আর git log হলো "এতদিন কী হয়েছে"।
git log-এর সাথে যেসব flag বেশি ব্যবহার হয়
git log --oneline — প্রতিটা commit এক লাইনে দেখায় (সংক্ষিপ্ত hash + message)। দ্রুত ইতিহাস দেখার জন্য সবচেয়ে বেশি ব্যবহৃত।
git log --graph --oneline --all — branch আর merge-এর গঠন ASCII graph আকারে দেখায়। Branch structure বোঝার জন্য দারুণ।
git log -p — প্রতিটা commit-এর সাথে diff (কোড-এ ঠিক কী পরিবর্তন হয়েছে) দেখায়।
git log -n 5 (বা git log -5) — শুধু শেষ ৫টা commit দেখায়।
git log --stat — কোন ফাইলে কত লাইন যোগ/বাদ হয়েছে তার সারসংক্ষেপ দেখায়।
git log --author="Mahmudul" — নির্দিষ্ট author-এর commit filter করে।
git log --since="2 weeks ago" — নির্দিষ্ট সময়ের commit দেখায় (--until-ও আছে)।
git log -- path/to/file.java — শুধু একটা নির্দিষ্ট ফাইলের ইতিহাস দেখায়।
git log --grep="fix" — commit message-এ নির্দিষ্ট শব্দ খুঁজে filter করে।
দৈনন্দিন কাজে সবচেয়ে বেশি কাজে লাগে এই combination-টা:
git log --oneline --graph --decorate -15
এতে branch pointer, tag সহ শেষ ১৫টা commit-এর একটা পরিষ্কার ছবি পাওয়া যায়। চাইলে এটাকে alias বানিয়ে রাখতে পারেন:
git config --global alias.lg "log --oneline --graph --decorate"