راهنمای گیت

پیدا کردن مسئول تغییرات

وقتی با یک باگ یا رفتار عجیب در کد روبرو می‌شوید، معمولاً اولین سوال این است: «چه کسی و چه زمانی این خط را نوشته؟» گیت ابزارهایی برای این کار دارد.

git blame

دستور blame هر خط یک فایل را به همراه نام نویسنده و کامیتی که آن خط را آخرین بار تغییر داده نشان می‌دهد:

git blame نام‌فایل

خروجی شبیه به این است:

a1b2c3d (علی محمدی  2024-03-15 10:22:31 +0330  1) function login() {
e4f5g6h (سارا احمدی  2024-03-20 14:10:05 +0330  2)   if (!user) return;
a1b2c3d (علی محمدی  2024-03-15 10:22:31 +0330  3) }

blame روی بازه‌ای از خطوط

برای بررسی فقط چند خط خاص (مثلاً خطوط ۱۰ تا ۲۵):

git blame -L 10,25 نام‌فایل

blame با نام کوتاه‌شده‌ی کامیت

git blame --abbrev=8 نام‌فایل

جستجو در تاریخچه با git log -S

برای یافتن کامیتی که یک رشته‌ی متنی خاص را اضافه یا حذف کرده:

git log -S "نام‌تابع‌یا‌متن" --oneline

این روش برای پیدا کردن اینکه چه زمانی یک قابلیت اضافه یا حذف شده بسیار مفید است.

جستجو با git log -G

برای جستجو با استفاده از regex در تغییرات:

git log -G "الگوی‌regex" --oneline

git bisect — یافتن کامیت باگ‌دار

وقتی می‌دانید باگی وجود دارد اما نمی‌دانید کدام کامیت آن را ایجاد کرده، bisect با جستجوی دودویی کامیت مشکل‌دار را پیدا می‌کند:

# شروع عملیات bisect
git bisect start

# علامت‌گذاری وضعیت فعلی به‌عنوان خراب
git bisect bad

# علامت‌گذاری یک کامیت قدیمی که سالم بود
git bisect good هش‌کامیت‌سالم

گیت کامیت‌های میانی را به شما نشان می‌دهد. بعد از بررسی هر کامیت:

git bisect good   # اگر این کامیت سالم است
git bisect bad    # اگر این کامیت خراب است

وقتی کامیت مشکل‌دار پیدا شد، برای پایان دادن به bisect:

git bisect reset