انتقل إلى المحتوى

Blame

عرض الـ blame في ليڤانت غيت (LevantGit) يجيب عن سؤال واحد: من كتب هذا السطر، وفي أي commit، ومتى. يعرض الملف وبإزاء كل سطر آخر commit غيّره، باسم كاتبه وتاريخه ورسالته. تحتاجه حين تصادف سطرًا غامضًا وتريد قصّته أو الشخص المناسب لتسأله. وتتعلّم هنا أيضًا كيف تخفي منه commits التنسيق الكبيرة.

متى تحتاجه؟

تصادف سطرًا غريبًا في الكود وتريد أن تعرف لماذا كُتب هكذا، أو تريد أن تسأل الشخص المناسب عنه. الـ log العادي يعرض الـ commits كلها؛ أما الـ blame فيعرض الملف نفسه ومقابل كل سطر آخر commit غيّره، باسم الكاتب والتاريخ ورسالة الـ commit.

عرض الـ blame من الواجهة

  1. افتح الـ repository وتنقّل إلى الملف الذي تريد.
  2. في شريط رأس الملف اضغط زر Blame.
  3. يظهر الملف وعلى جانبه، مقابل كل مجموعة أسطر، الـ commit الذي غيّرها مع اسم الكاتب. اضغط على الـ commit لترى تفاصيله كاملة.
  4. للانتقال إلى نسخة أقدم من الملف، قبل ذلك الـ commit، اضغط أيقونة الإصدارات السابقة بجانب الـ commit. هكذا تتبع تاريخ السطر إلى الوراء خطوة خطوة.

من سطر الأوامر

الأمر نفسه متاح في الطرفية بـ git blame:

git blame README.md

ولتحديد نطاق من الأسطر فقط (من ١٠ إلى ٢٠ مثلًا):

git blame -L 10,20 README.md

تجاهل commits في عرض الـ blame

عندما تمرّر أداة تنسيق على المشروع كله، أو تغيّر المسافات البادئة في آلاف الأسطر، يصبح ذلك الـ commit «مالكًا» لكل شيء ويخفي التاريخ الحقيقي. الحل: ضع معرّفات هذه الـ commits في ملف اسمه .git-blame-ignore-revs في جذر الـ repository، فيتجاهلها ليڤانت غيت في العرض. الأسطر التي غيّرها commit متجاهَل تُنسب إلى الـ commit السابق الذي غيّرها أو غيّر ما حولها.

مثال لمحتوى الملف:

# تنسيق المشروع كله بأداة prettier
a1b2c3d4e5f60718293a4b5c6d7e8f9012345678

# تحويل المسافات إلى tab
0f1e2d3c4b5a69788796a5b4c3d2e1f0fedcba98

لتفاصيل الصيغة انظر وثائق git blame --ignore-revs-file. ولتطبيق الملف نفسه محليًا:

git config blame.ignoreRevsFile .git-blame-ignore-revs

نصيحة

أضف ملف .git-blame-ignore-revs نفسه في commit منفصل بعد commit التنسيق، لأنك تحتاج معرّف commit التنسيق الكامل قبل أن تكتبه في الملف.

تجاوز .git-blame-ignore-revs في العرض

إن ظهرت في عرض الـ blame رسالة تقول إن commits تم تجاهلها، وأردت رؤية العرض الكامل بلا تجاهل، فأضف إلى نهاية رابط الصفحة المعلمة ?bypass-blame-ignore=true.

ماذا بعد؟


هذه الصفحة مبنية على وثائق Gitea (رخصة MIT) بعد ترجمتها وتبسيطها.