git grep

تتبّع الأخطاء

البحث عن نص في الملفات المتتبَّعة


يبحث الأمر 'git grep' في الملفات التي يتتبعها Git ويطبع كل سطر مطابق مع اسم ملفه. إنه أسرع من grep العادي في المشاريع الكبيرة، ويتخطى الملفات غير المتتبَّعة والمتجاهَلة (مثل node_modules)، ويمكنه البحث في أي commit أو فرع دون استخراجه.

الصيغة

git grep [<options>] <pattern> [<tree>...] [--] [<pathspec>...]
[ ] اختياري| أو<arg> قيمة تُستبدل... قابل للتكرار--flag خيار

الخيارات

انقر على أي خيار لتوسيعه

مبتدئ (5)

وضع رقم السطر قبل كل تطابق.

موصى بهالقفز مباشرة إلى السطر المطابق

مثال

git grep -n cart

تجاهل الفرق بين الأحرف الكبيرة والصغيرة.

موصى بهالعثور على كلمة أيًا كانت حالة أحرفها

مثال

git grep -i welcome

عرض عدد الأسطر المطابقة لكل ملف بدل الأسطر.

عند الحاجةكم سطرًا يطابق في كل ملف

مثال

git grep -c cart

عرض أسماء الملفات التي فيها تطابق فقط.

عند الحاجةسرد الملفات المطابقة، مثلًا لفتحها كلها

مثال

git grep -l login

مطابقة النمط ككلمة كاملة فقط.

عند الحاجةتجنّب مطابقة أجزاء الكلمات

مثال

git grep -w i

اختيار الخيار المناسب

git grep vs grep

لماذا بحث Git نفسه

الأمريبحث فيالنسخ القديمة
grep -rكل ملف على القرص، بما فيه node_modulesNo
git grepالملفات المتتبَّعة فقطنعم: git grep x <commit>

أمثلة

البحث عن نص

git grep "cart"

كل سطر في كل ملف متتبَّع يحتوي cart.


مع أرقام الأسطر

git grep -n "cart"

يضيف رقم السطر.


في commit آخر

git grep "cart" v1.0

البحث في المشروع كما كان في v1.0.


بعض الملفات فقط

git grep "TODO" -- "*.js"

حصر البحث في ملفات JavaScript.

أمثلة على سير العمل

1
git grep -n "count("

كل استدعاء مع سطره

2
git grep -l "count("

قائمة الملفات المطلوب تحريرها

حل المشكلات

لا مخرجات، رمز الخروج 1

السبب: لا تطابق

تحقّق من الإملاء، جرّب -i، أو تأكد أن الملف متتبَّع

ملف أنشأته للتو لا يُبحث فيه

السبب: يبحث git grep في الملفات المتتبَّعة فقط

نفّذ git add عليه، أو استخدم git grep --untracked

نصائح وأخطاء شائعة

أفضل الممارسات

  • ✓فعّل أرقام الأسطر مرة واحدة: git config --global grep.lineNumber true.
  • ✓ابحث في الإصدارات القديمة بـ git grep <pattern> <tag> بدل استخراجها.

أخطاء متكررة

  • ✗توقّع ظهور الملفات غير المتتبَّعة في النتائج — أضفها أولًا، أو استخدم --untracked.
  • ✗نسيان علامات الاقتباس حول الأنماط التي فيها مسافات أو رموز خاصة.

الأسئلة الشائعة

A:

نعم: الأساسية افتراضيًا، و-E للموسّعة، و-P لصيغة Perl.

A:

يبحث في الأشجار التي تسمّيها؛ ولإيجاد الـ commit الذي أضاف نصًا استخدم git log -S "text".