Filtering the History
در پروژههای واقعی اغلب صدها یا هزاران کامیت رو در 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