قدرت Git Log: شما نمی دانید چگونه از آن استفاده کنید.

فهرست مطالب
- tl ؛ دکتر
- چرا این را نوشتم
- GIT LOG چیست؟
- گزینه -g: جستجوی تغییرات در کد
- گزینه -s: ردیابی اضافی و حذف خطوط
- تفاوت های کلیدی بین -g و -s
tl ؛ دکتر
در این مقاله نحوه استفاده از Git Log با گزینه های -g و -s برای ردیابی تغییرات در پایگاه کد شما به طور مؤثر توضیح داده شده است.
-
-G<regex>
جستجو برای تعهداتی که خطوط مطابق با یک regex اصلاح شده (اضافه شده یا حذف شده). -
-S<regex>
تعهداتی را پیدا می کند که تعداد وقایع یک رشته تغییر یافته (اضافه شده یا حذف شده). -
تفاوت کلیدی: -G ویرایش ها را به خطوط تطبیق تشخیص می دهد. -S تغییرات در حضور/عدم حضور الگوی را تشخیص می دهد.
چرا این را نوشتم
من نیاز به شناسایی کدام تست ها برای انجام PR خود داشتم که نسخه محیط Go Runtime را تغییر داد. از آنجا که چندین PRS قبلی با جزئیات تست های دستی و سایر اطلاعات مورد نیاز من وجود داشت ، می توانم به دنبال روابط عمومی همکار دیگری باشم. با این حال ، مشکلی پیش آمد: چگونه می توانم با این تغییر در بسیاری از PRS و کارت ها ، روابط عمومی پیدا کنم؟ به صورت دستی امکان پذیر نبود.
خوب ، من بلافاصله ، که در حال حاضر کمی در مورد “git log” می دانم ، شروع کردم به جستجوی چگونگی پیدا کردن تغییراتی در این go.mod
پرونده ای که با بیان منظم مطابقت دارد ^go [0-9]
بشر و voila ، من چندین PR را پیدا کردم ، سرشار از اطلاعات مورد نیاز: 3
git log -G'^go [0-9]' -- go.mod
GIT LOG چیست؟
قبل از اینکه به گزینه های خاص بپردازیم ، بیایید به طور خلاصه درک کنیم git log
فرمان انجام می دهد. در git log
برای نمایش تاریخ تعهد یک مخزن GIT استفاده می شود. این گزینه های مختلفی را برای فیلتر و قالب بندی این اطلاعات فراهم می کند و به توسعه دهندگان این امکان را می دهد تا تغییرات را بررسی کرده و جدول زمانی یک پروژه را به طور کارآمد درک کنند.
در -G
گزینه: جستجوی تغییرات در کد
در -G<regex>
گزینه به شما امکان می دهد به دنبال تغییراتی در تاریخچه تعهد باشید که در آن متن پچ (تفاوت های ایجاد شده در کد) حاوی خطوط اضافه شده یا حذف شده است که با یک عبارت معمولی خاص مطابقت دارند.
چگونه کار می کند
هنگام استفاده -G
، GIT تفاوت های تعهدات را اسکن می کند و فقط مواردی را که شامل خطوط اضافه شده یا حذف شده است ، به شما نشان می دهد که مطابق با الگوی Regex داده شده شما هستند. این امر به ویژه هنگامی مفید است که شما به یک تابع خاص ، متغیر یا الگوی کد علاقه مند هستید که ممکن است با گذشت زمان تغییر کرده باشد.
مثال استفاده از مورد
فرض کنید شما می خواهید تاریخچه تغییرات را در یک تابع به نام ردیابی کنید calculateSum
بشر شما می توانید اجرا کنید:
git log -G'calculateSum'
این دستور همه تعهداتی را که این عملکرد را تغییر داده است ، به همراه تفاوت های مربوطه به شما نشان می دهد. این یک روش قدرتمند برای ردیابی چگونگی تکامل یک قطعه خاص در طول پروژه است و به شما امکان می دهد تغییرات را با تعهدات خاص متصل کنید.
در -S
گزینه: ردیابی اضافی و حذف خطوط
در مقابل ، -S<regex>
گزینه ، که اغلب به عنوان گزینه “pickaxe” گفته می شود ، به شما کمک می کند تا تعهداتی را پیدا کنید که بطور خاص خطوط مطابق با الگوی Regex را اضافه یا حذف کنید. این بدان معناست که شما نه تنها به تغییرات خود علاقه دارید بلکه در این که آیا تعداد وقایع رشته مشخص شده تغییر کرده است یا خیر.
چگونه کار می کند
وقتی استناد می کنید -S
گزینه ، GIT هرکدام را متعهد می کند که ببیند آیا تعداد وقایع رشته (یا الگوی) مشخص شده افزایش یافته یا کاهش یافته است یا خیر. اگر مسابقات تغییر کرده است ، ورود به سیستم مرتکب می شود و به شما امکان می دهد درک کنید که چه موقع و چرا یک الگوی خاص از آن استفاده می شود یا از آن خارج می شود.
مثال استفاده از مورد
اگر می خواهید ببینید چه زمانی calculateSum
عملکرد اضافه شده یا به طور کامل از پایگاه کد حذف شده است ، می توانید استفاده کنید:
git log -S'calculateSum'
این دستور تعهداتی را باز می گرداند که به طور خاص به وجود آن عملکرد پرداخته می شود و به شما در شناسایی هنگام معرفی یا حذف کمک می کند.
تفاوت های کلیدی بین -G
وت -S
همانطور که در گزیده مستندات اصلی نشان داده شده است ، تمایز اصلی بین این دو گزینه در آنچه که آنها دنبال می کنند نهفته است:
-
-G
: روی محتوای پچ تمرکز دارد. این خطایی را در خطوط مطابقت با regex پیدا می کند. -
-S
: متمرکز بر تعداد وقایع. این به دنبال تعهداتی خواهد بود که تعداد رشته تطبیق تغییر کرده است.
به عنوان مثال ، اگر یک تابع با یک نام جدید ظاهر شود اما منطق مشابهی دارد ، -G
ممکن است این تغییر را تشخیص دهد ، در حالی که -S
نتیجه ای نشان نمی دهد زیرا تعداد رشته تغییر نکرده است.
پایان
به عنوان توسعه دهندگان ، تسلط بر این ابزارها می تواند ما را به سمت درک عمیق تر از پروژه های ما سوق دهد ، اشکال زدایی باهوش تر را تسهیل کند و همکاری کلی را در تیم ها بهبود بخشد. بنابراین پیش بروید ، این گزینه ها را کاوش کنید و اکتشافات خود را با توسعه دهندگان دیگر در شبکه خود به اشتراک بگذارید!