در پروژه‌های واقعی اغلب صدها یا هزاران کامیت رو در repository داریم. و البته این بستگی به سن repository داره.

می‌تونیم کامیت‌ها رو براساس author، date،‌ commit message، محتوا و… فیلتر کنیم.

با توجه به اینکه کامیت‌ها رو با دستورِ log مشاهده می‌کنیم، برای فیلتر کردن هم از همین دستور با آپشن‌های متفاوت استفاده می‌کنیم.

برای دیدن سه کامیت آخر

git log --oneline 3

برای فیلتر کردن براساس author

git log --oneline --author="Mosh"

برای فیلتر کردن براساس از خود تاریخ تا بعد از اون یا قبل از اون.

git log --oneline --after="2020-08-17"
git log --oneline --before="2020-08-17"

می‌تونیم از relative date هم استفاده کنیم.

git log --oneline --after="yesterday"
git log --oneline --after="one week ago"

می‌تونیم با توجه به پیام‌ کامیت‌ها فیلتر کنیم. فقط توجه داشته باشید که این عملیات case sensitive هستن و به بزرگ و کوچیک بودن حروف حساس هستنش.

git log --oneline --grep="GUI"

می‌تونیم history رو براساس محتوا نیز فیلتر کنیم. البته برای دیدنِ محتواش نیز می‌تونیم از آپشنِ‌ patch استفاده کنیم.

git log --oneline -S"OBJECTIVES"
git log --oneline -S"OBJECTIVES" --patch

می‌تونیم محدوده‌ی خاصی (از طریقِ id) از کامیت‌ها رو فیلتر کنیم.

git log --oneline fb0d184..edb3594

می‌تونیم کامیت‌ها رو با توجه به فایل یا فایل‌هایی که درشون تغییر داده شدن، فیلتر کنیم. نتیجه خروجی دستور زیر کامیت‌هایی خواهند بود که فایلِ‌ toc.txt (مخففِ table of content) درشون تغییر دادن شده.

git log --oneline toc.txt

برای اینکه برخی اوقات از لحاظ اسمِ فایل‌هایی که مبهم‌ هستن با خطا روبرو نشیم می‌تونیم با -— اسم‌ِ فایل‌‌ها رو با آپشن‌ها جدا کنیم. دیگه بعد از -— گیت هر چی رو بنویسیم نام فایل در نظر خواهد گرفت و باید آپشن‌ها رو قبل از -— بنویسیم.

git log --oneline -- toc.txt

مثلاً اگر خواستیم محتوایِ فایلِ toc.txt در هر کامیتی که درش تغییر کرده رو ببینیم دستور بالا رو با آپشنِ patch بصورتِ زیر می‌نویسیم.

git log --oneline --patch -- toc.txt