গিট লগ কমান্ড একটি গিট সংগ্রহস্থলে কমিটের একটি রেকর্ড প্রদর্শন করে। ডিফল্টরূপে, গিট লগ কমান্ড একটি কমিট হ্যাশ, কমিট বার্তা এবং অন্যান্য কমিট মেটাডেটা প্রদর্শন করে। আপনি বিভিন্ন বিকল্প ব্যবহার করে গিট লগের আউটপুট ফিল্টার করতে পারেন।
সংস্করণ নিয়ন্ত্রণ ব্যবস্থার একটি মূল উদ্দেশ্য রয়েছে - সময়ের সাথে সাথে আপনার কোডবেস কীভাবে বিবর্তিত হয় তা রেকর্ড করা। এটি আপনাকে আপনার প্রকল্পগুলি কীভাবে অগ্রসর হয়েছে তা দেখতে দেয়। আপনি খুঁজে পেতে পারেন কে আপনার প্রকল্পে অবদান রেখেছে এবং আপনার কোডে কী পরিবর্তন করা হয়েছে এবং কখন করা হয়েছে তা শনাক্ত করতে পারেন৷
কিন্তু আপনার গিট রিপোজিটরি যে ইতিহাস তৈরি করে তা আপনি আসলে কীভাবে দেখবেন? সেখানেই গিট লগ কমান্ড সহায়ক হতে পারে।
এই টিউটোরিয়ালটি উদাহরণ সহ আলোচনা করবে, গিট লগ কমান্ডের মূল বিষয়গুলি এবং কীভাবে আপনি একটি গিট সংগ্রহস্থল পরিদর্শন করতে এটি ব্যবহার করতে পারেন৷
গিট লগ কমান্ড
গিট লগ কমান্ড একটি সংগ্রহস্থলে করা সমস্ত কমিটের একটি তালিকা দেখায়। আপনি প্রতিটি গিট কমিটের হ্যাশ, প্রতিটি কমিটের সাথে যুক্ত বার্তা এবং আরও মেটাডেটা দেখতে পারেন। এই কমান্ডটি একটি সংগ্রহস্থলের ইতিহাস প্রদর্শনের জন্য উপযোগী৷
যেখানে গিট স্ট্যাটাস কমান্ড বর্তমান কাজের ডিরেক্টরিতে ফোকাস করা হয়, গিট লগ আপনাকে আপনার সংগ্রহস্থলের ইতিহাস দেখতে দেয়।
গিট লগ কমান্ডের উদাহরণ
গিট লগ কমান্ড কিভাবে কাজ করে তা বোঝানোর জন্য একটি উদাহরণ দিয়ে চলুন। আমরা "ডেমো-রিপোজিটরি" নামে একটি সংগ্রহস্থলে কাজ করছি। এখন আমরা আমাদের সংগ্রহস্থলে পুশ করা সমস্ত কমিটের একটি তালিকা দেখতে চাই। এটি করার জন্য, আমরা এই কমান্ডটি ব্যবহার করতে পারি:
গিট লগ কমান্ড একটি সংগ্রহস্থলে করা সমস্ত কমিটের একটি তালিকা প্রদান করে। এই কমান্ডের দ্বারা প্রত্যাবর্তিত একটি একক প্রতিশ্রুতির উদাহরণ এখানে:
commit 43433c674e3d6c86a889fad222dae179785893cf (HEAD -> master, origin/master, origin/HEAD) Author: James Gallagher <37276661+jamesgallagher432@users.noreply.github.com> Date: Tue Apr 7 13:09:58 2020 +0100 Update index.html
এই আউটপুট ধাপে ধাপে আলোচনা করা যাক. গিট লগ কমান্ড দ্বারা প্রত্যাবর্তিত প্রতিটি এন্ট্রিতে রয়েছে:
- কমিটের জন্য সিকিউর হ্যাশ অ্যালগরিদম (SHA) হ্যাশ, যা একটি সংগ্রহস্থলে প্রতিটি কমিটকে স্বতন্ত্রভাবে সনাক্ত করতে ব্যবহৃত হয়। আমাদের উপরের উদাহরণে, এটি ছিল "43433c674e3d6c86a889fad222dae179785893cf"৷
- কমিটের লেখক। আমাদের উপরের উদাহরণে, এটি ছিল জেমস গ্যালাঘের। লেখকের ইমেলও নির্দিষ্ট করা আছে।
- কমিটটি পুশ করার তারিখ। আমাদের উপরের উদাহরণে, এটি ছিল মঙ্গলবার, এপ্রিল ৭ই৷ ৷
- কমিটের সাথে যুক্ত বার্তা। উপরে ফিরে আসা প্রতিশ্রুতি বার্তাটি ছিল "আপডেট index.html"৷ ৷
এই সমস্ত ডেটা আমাদের সংগ্রহস্থলের প্রতিশ্রুতি সম্পর্কে দরকারী তথ্য দেয়৷
গিট লগের আউটপুট ফিল্টার করা হচ্ছে
ডিফল্টরূপে, গিট লগ এই কাঠামো ব্যবহার করে একটি সংগ্রহস্থলে করা সমস্ত কমিটের একটি তালিকা প্রদান করে। আপনি যেমন কল্পনা করতে পারেন, আপনার গিট লগ স্টেটমেন্ট পড়া দ্রুত কঠিন হয়ে উঠতে পারে যদি পড়ার জন্য অনেক প্রতিশ্রুতি থাকে।
git log কিছু পতাকা নিয়ে আসে যা আপনি আপনার লগ ফিল্টার করতে ব্যবহার করতে পারেন। এগুলো হল:
সর্বাধিক সাম্প্রতিক দ্বারা ফিল্টার করুন
আপনি যদি একটি নির্দিষ্ট সংখ্যক কমিট ফেরত দিতে চান তবে আপনি -n পতাকা ব্যবহার করে তা করতে পারেন। এখানে এই পতাকার কর্মের একটি উদাহরণ রয়েছে:
এই কমান্ডটি একটি সংগ্রহস্থলে করা তিনটি সাম্প্রতিক প্রতিশ্রুতির একটি তালিকা প্রদান করে৷
লেখক বা কমিটর দ্বারা ফিল্টার করুন
আপনি পরিবর্তনগুলি লিখেছেন বা প্রতিশ্রুতিবদ্ধ ব্যক্তির দ্বারা গিট লগ দ্বারা প্রত্যাবর্তিত কমিটগুলি ফিল্টার করতে পারেন। ধরুন আমরা "জন স্মিথ" দ্বারা পুশ করা প্রতিশ্রুতিগুলির একটি তালিকা দেখতে চাই৷ আমরা এই কমান্ডগুলি ব্যবহার করে তা করতে পারি:
git log --author="John Smith" git log --committer="John smith"
লেখক পতাকা ফলাফলগুলিকে কমিটের মধ্যে সীমাবদ্ধ করে যার পরিবর্তনগুলি জন স্মিথ দ্বারা করা হয়েছিল৷ প্রতিশ্রুতিদাতা পতাকা ফলাফলগুলিকে সেই প্রতিশ্রুতিতে সীমাবদ্ধ করে যা প্রকৃতপক্ষে সেই ব্যক্তির দ্বারা প্রতিশ্রুতিবদ্ধ হয়েছিল৷
৷আপনি দেখতে পাবেন যে, বেশিরভাগ ক্ষেত্রে, লেখক এবং প্রতিশ্রুতি একই ব্যক্তি। বৃহত্তর প্রকল্পগুলিতে, একটি প্রতিশ্রুতির লেখক অগত্যা এমন নয় যে এটিকে একটি সংগ্রহস্থলে ঠেলে দেয়। এই কারণেই এই দুটি পতাকা বিদ্যমান।
তারিখ অনুসারে ফিল্টার করুন
এছাড়াও, আপনি তারিখ অনুসারে গিট লগের ফলাফলগুলি ফিল্টার করতে পারেন। এটি করার জন্য, আপনি পতাকাগুলির আগে এবং পরে ব্যবহার করতে পারেন। এই পতাকাগুলি উভয়ই তারিখ বিন্যাসের একটি বিস্তৃত পরিসর গ্রহণ করে, তবে দুটি সর্বাধিক ব্যবহৃত হয় আপেক্ষিক রেফারেন্স এবং সম্পূর্ণ তারিখ৷
ধরুন আমরা 2019-3-2 এর পর থেকে প্রতিশ্রুতির একটি তালিকা পুনরুদ্ধার করতে চাই। আমরা এই কমান্ডটি ব্যবহার করে তা করতে পারি:
git log --after="2019-3-2"
আমরা আমাদের প্রতিশ্রুতি ফিল্টার করার জন্য একটি তারিখ নির্দিষ্ট করেছি। একইভাবে, যদি আমরা গতকালের আগে থেকে কমিটের একটি তালিকা পুনরুদ্ধার করতে চাই, আমরা এই কমান্ডটি ব্যবহার করে তা করতে পারি:
git log --before="yesterday"
আমরা একটি আপেক্ষিক মান নির্দিষ্ট করেছি ("গতকাল")।
এখন, ধরুন আমরা কমিটগুলির একটি তালিকা পুনরুদ্ধার করতে চাই যা 2019-3-2 এর পরে এবং 2019-3-19 এর আগে প্রকাশিত হয়েছিল। আমরা এই কমান্ডটি ব্যবহার করে তা করতে পারি:
git log --after="2019-3-2" --before="2019-3-19"
ফাইল দ্বারা ফিল্টার করুন
আপনি যখন গিট লগ কমান্ড ব্যবহার করছেন, আপনি শুধুমাত্র একটি নির্দিষ্ট ফাইলকে প্রভাবিত করেছে এমন কমিটগুলির একটি তালিকা দেখতে চাইতে পারেন। এটি করার জন্য, আপনি যে ফাইলটির পরিবর্তনগুলি দেখতে চান তা নির্দিষ্ট করতে পারেন৷
৷ধরুন আমরা আমাদের কোডে “main.py” ফাইলে করা পরিবর্তনগুলি দেখতে চাই। আমরা নিম্নলিখিত কমান্ড ব্যবহার করে তা করতে পারি:
— স্টেটমেন্টটি গিট লগ কমান্ডকে নির্দেশ দেয় যে আমরা যে আর্গুমেন্টগুলি নির্দিষ্ট করেছি তা হল ফাইল পাথ এবং শাখার নাম নয়৷
আমাদের কমান্ডে, আমরা শুধুমাত্র একটি ফাইল নির্দিষ্ট করেছি যা আমরা গিট লগ কমান্ডের প্রতিক্রিয়া ফিল্টার করতে ব্যবহার করতে চেয়েছিলাম। কিন্তু, যদি আপনি চান, আপনি একাধিক ফাইল নির্দিষ্ট করতে পারেন।
সামগ্রী দ্বারা ফিল্টার করুন
আপনি এমন প্রতিশ্রুতিগুলিও অনুসন্ধান করতে পারেন যা কোডের একটি নির্দিষ্ট লাইন সরিয়ে দিয়েছে বা যুক্ত করেছে৷

"ক্যারিয়ার কর্ম আমার জীবনে প্রবেশ করেছিল যখন আমার এটির সবচেয়ে বেশি প্রয়োজন ছিল এবং দ্রুত আমাকে একটি বুটক্যাম্পের সাথে মেলাতে সাহায্য করেছিল৷ স্নাতক হওয়ার দুই মাস পরে, আমি আমার স্বপ্নের চাকরি পেয়েছি যা আমার মূল্যবোধ এবং জীবনের লক্ষ্যগুলির সাথে সামঞ্জস্যপূর্ণ!"
ভেনাস, রকবটের সফটওয়্যার ইঞ্জিনিয়ার
আপনার বুটক্যাম্প ম্যাচ
খুঁজুনধরুন আমরা আমাদের কোডে "# ভূমিকা" শব্দটি যুক্ত করা সমস্ত কমিট অনুসন্ধান করতে চাই। আমরা এই কমান্ডটি ব্যবহার করে তা করতে পারি:
git log -S"# Introduction"
-S পতাকাটি নির্দিষ্ট করার জন্য ব্যবহৃত হয় যে আমরা আমাদের প্রতিশ্রুতিগুলির তালিকায় কোন প্রতিশ্রুতি পরিবর্তন করতে চাই। লক্ষ্য করুন যে -S পতাকার মধ্যে কোন স্থান বা সমান চিহ্ন নেই। এছাড়াও, উদ্ধৃতি চিহ্ন যা আমরা কমিটের বিষয়বস্তু নির্দিষ্ট করতে ব্যবহার করেছি যার জন্য আমরা খুঁজছি।
পরিসীমা অনুযায়ী ফিল্টার করুন
আপনি গিট লগে কমিটের একটি পরিসীমা পাস করতে since এবং till পরামিতি ব্যবহার করতে পারেন। এই পরামিতিগুলির জন্য সিনট্যাক্স নিম্নরূপ:
ধরুন আমরা কমিট b72beb5 পুশ করার পর থেকে এবং কমিট b53b22d পুশ না হওয়া পর্যন্ত করা কমিটের একটি তালিকা পুনরুদ্ধার করতে চাই। আমরা এই কমান্ডটি ব্যবহার করে তা করতে পারি:
এই কমান্ডটি b72beb5 এবং b53b22d কমিটের মধ্যে সমস্ত কমিটের একটি তালিকা প্রদান করে৷
বার্তা দ্বারা ফিল্টার করুন
-grep পতাকা আপনাকে একটি নির্দিষ্ট প্রতিশ্রুতির সাথে যুক্ত কমিট বার্তা দ্বারা গিট লগ দ্বারা প্রত্যাবর্তিত প্রতিশ্রুতিগুলিকে ফিল্টার করতে দেয়৷
উদাহরণস্বরূপ, ধরুন আমরা সমস্ত কমিটের একটি তালিকা ফেরত দিতে চাই যার নাম "feat:" দিয়ে শুরু হয়। আমরা এই কোডটি ব্যবহার করে তা করতে পারি:
এই কমান্ডটি সমস্ত কমিটের একটি তালিকা প্রদান করে যার বার্তাগুলি "feat:" দিয়ে শুরু হয়৷
৷গিট লগের আউটপুট ফরম্যাটিং
শেষ বিভাগে, আমরা গিট লগ কমান্ড থেকে একটি সম্পূর্ণ আউটপুট নিয়ে কাজ করেছি। এই আউটপুটে আমাদের প্রতিশ্রুতি, প্রতিশ্রুতি লেখক, প্রতিশ্রুতি পুশ করার তারিখ এবং প্রতিশ্রুতি বার্তার জন্য SHA রয়েছে৷
যদিও এই সমস্ত তথ্য দরকারী, প্রায়শই এমন ঘটনা ঘটে যেখানে আপনাকে শুধুমাত্র একটি প্রতিশ্রুতি সম্পর্কে নির্দিষ্ট ডেটা পুনরুদ্ধার করতে হবে। ভাগ্যক্রমে, git log কমান্ডটি কয়েকটি পতাকা সহ আসে যা আপনি কমান্ডের আউটপুট ফর্ম্যাট করতে ব্যবহার করতে পারেন।
সংক্ষিপ্ত লগ ফেরত দিন
ডিফল্টরূপে, গিট লগ স্টেটমেন্ট একটি সংগ্রহস্থলে করা প্রতিটি কমিটের জন্য একটি সম্পূর্ণ লগ এন্ট্রি প্রদান করে। আপনি –oneline পতাকা ব্যবহার করে কমিট আইডি এবং তাদের সংশ্লিষ্ট প্রতিশ্রুতি বার্তাগুলির একটি তালিকা পুনরুদ্ধার করতে পারেন৷
৷এখানে –oneline পতাকার জন্য সিনট্যাক্স রয়েছে:
আমাদের সংগ্রহস্থলে আগে থেকে চালানো হলে, এই কমান্ডটি ফিরে আসে:
43433c6 (HEAD -> master, origin/master, origin/HEAD) Update index.html a7d8dc2 docs: Update README.md b53b22d feat: Update website 3b16026 feat: Launch new homepage b72beb5 first commit
আমরা কমিট আইডি এবং একটি প্রতিশ্রুতির সাথে যুক্ত বার্তাগুলির প্রথম লাইন দেখতে পারি। একটি কমিটের সাথে যুক্ত সমস্ত মেটাডেটার তুলনায় এটি পড়া সহজ যে গিট লগ কমান্ড অন্যথায় ফিরে আসবে।
প্রতিটি এন্ট্রি একটি একক লাইনে প্রদর্শিত হবে। এই গিট লগ ওয়ান লাইন কৌশলটি সুবিধাজনক কারণ এটি খুব বেশি তথ্য প্রদর্শন না করে কমিট দেখায়।
আউটপুট সাজানো
-ডেকোরেট পতাকা আপনাকে একটি নির্দিষ্ট প্রতিশ্রুতি নির্দেশ করে এমন সমস্ত রেফারেন্স (যেমন শাখা এবং ট্যাগ) দেখতে দেয়। এই ফ্ল্যাগের জন্য সিনট্যাক্স এখানে:
এই কমান্ডটি ফিরে আসে:
43433c6 (HEAD -> master, origin/master, origin/HEAD) Update index.html a7d8dc2 docs: Update README.md b53b22d feat: Update website 3b16026 (tag: v1) feat: Launch new homepage b72beb5 first commit
আমাদের তালিকার চতুর্থ কমিটের এখন তার ট্যাগের নাম নির্দিষ্ট করা আছে। এর কারণ হল -ডেকোরেট পতাকা আমাদের প্রতিশ্রুতির ইতিহাসে প্রতিটি প্রতিশ্রুতির সাথে সম্পর্কিত উল্লেখগুলি প্রকাশ করে৷
একটি পার্থক্য ফিরিয়ে দেওয়া
-স্ট্যাট পতাকা আপনাকে প্রতিটি কমিটের একটি সংগ্রহস্থল থেকে যোগ করা এবং মুছে ফেলা কোডের লাইনের সংখ্যা প্রদর্শন করতে দেয়। এখানে গিট লগ -স্ট্যাট কমান্ডের একটি উদাহরণ রয়েছে:
Author: James Gallagher <james@users.noreply.github.com> Date: Mon Apr 6 09:11:46 2020 +0100 feat: Update website index.html | 1 + index.js | 0 2 files changed, 1 insertion(+)
যোগ চিহ্ন (+) সন্নিবেশ নির্দেশ করে, এবং, যদি থাকে, বিয়োগ চিহ্ন (-) মুছে ফেলা নির্দেশ করবে। এই ডেটা আপনাকে একটি সংগ্রহস্থলে করা সামগ্রিক পরিবর্তনগুলি সম্পর্কে আরও জানতে দেয়৷
আপনি যদি একটি সংগ্রহস্থলে করা সঠিক পরিবর্তনগুলি দেখতে চান তবে আপনি -p পতাকা ব্যবহার করতে পারেন। এটি একটি প্রতিশ্রুতিতে করা পরিবর্তনগুলি দেখায় একটি আরও ব্যাপক পার্থক্য প্রদান করে৷
এখানে একটি এন্ট্রি দেওয়া হয়েছে git log -p কমান্ড থেকে, যখন আমাদের উদাহরণ সংগ্রহস্থলে চালানো হয়:
Author: James Gallagher <37276661+jamesgallagher432@users.noreply.github.com> Date: Tue Apr 7 13:09:58 2020 +0100 Update index.html diff --git a/index.html b/index.html index f45673f..2d2701d 100644 --- a/index.html +++ b/index.html @@ -1,2 +1,3 @@ -This is a file. -Changes have been made. +<body> + <p>This is a website.</p> +</body>
এই আউটপুটটি আমাদের প্রতিশ্রুতির বিবরণ এবং প্রতিশ্রুতিতে করা প্রতিটি পরিবর্তনের একটি বিশদ ভাঙ্গন দেখায়। আমরা দেখতে পারি যখন লোকেরা আমাদের সংগ্রহস্থলে ফাইলগুলি থেকে সামগ্রী যোগ করেছে বা সরিয়ে দিয়েছে৷
যদিও এই ডেটা উপযোগী, তবে প্রদর্শনের জন্য অনেক কমিট থাকলে এই আউটপুটটি পড়া দ্রুত কঠিন হয়ে উঠতে পারে। আমরা এই নিবন্ধে আলোচনা করেছি আপনি এক বা একাধিক অন্যান্য পতাকা ব্যবহার করতে চাইতে পারেন। এটি নিশ্চিত করতে সাহায্য করবে যে এই প্রতিশ্রুতি দ্বারা প্রত্যাবর্তিত তথ্যগুলি ব্যাপক এবং সহজে পড়া যায়৷
৷আপনি আমাদের গিট ডিফ কমান্ড গাইডে গিট ডিফ সম্পর্কে আরও পড়তে পারেন।
গিট শর্টলগ কমান্ড
গিট শর্টলগ কমান্ড একটি গিট লগের সারাংশ প্রদান করে। গিট শর্টলগ কমান্ডের আউটপুট লেখক দ্বারা গোষ্ঠীভুক্ত হয় যার অর্থ আপনি সহজেই দেখতে পারেন কে একটি সংগ্রহস্থলে কী পরিবর্তন করেছে৷
আগে থেকে আমাদের সংগ্রহস্থলে গিট শর্টলগ কমান্ড চালাই:
আমাদের কমান্ড ফিরে আসে:
James Gallagher (5): first commit feat: Launch new homepage feat: Update website docs: Update README.md Update index.html
জেমসই একমাত্র ব্যক্তি যিনি এই সংগ্রহস্থলে অবদান রেখেছেন এবং তিনি পাঁচটি প্রতিশ্রুতি দিয়েছেন। কিন্তু, যদি অন্য কোনো অবদানকারী থাকত, তাহলে তাদের অবদানগুলি এখানে তালিকাভুক্ত করা হবে, তারা সংগ্রহস্থলে ঠেলে দেওয়া মোট কমিটের সংখ্যার সাথে।
উপসংহার
গিট লগ কমান্ড আপনাকে দেখায় যে একটি সংগ্রহস্থলে কী পরিবর্তন করা হয়েছিল, কার দ্বারা এবং কখন। আপনি শুধুমাত্র আপনার জানা দরকার এমন তথ্য দেখানোর জন্য গিট লগের আউটপুট ফিল্টার করতে পারেন।
গিট লগ কমান্ড দুই ধরনের পতাকা নিয়ে আসে। কিছু পতাকা আপনাকে লগের আউটপুট ফর্ম্যাট করতে সাহায্য করে। অন্যান্য পতাকা যা আপনাকে কমান্ড দ্বারা প্রত্যাবর্তিত প্রতিশ্রুতি ফিল্টার করতে সাহায্য করতে পারে।
এই টিউটোরিয়ালটি উদাহরণের সাথে আলোচনা করা হয়েছে, কিভাবে গিট লগ ব্যবহার করতে হয় এবং কমান্ডের সাথে ব্যবহৃত সবচেয়ে সাধারণ পতাকাগুলি। Git এর সাথে কাজ করার সময় git log কমান্ড আপনার অস্ত্রাগারের একটি গুরুত্বপূর্ণ হাতিয়ার। একবার আপনি এই কমান্ডটি কার্যকরভাবে কীভাবে ব্যবহার করবেন তা জানলে, আপনি গিট সংগ্রহস্থলগুলি পরিদর্শনে একজন মাস্টার হবেন!
গিট সম্পর্কে আরও জানতে, আমাদের কিভাবে গিট শিখবেন গাইড পড়ুন।