كيف تزيل Co-Authored-By Claude من commits في git

يوقّع Claude Code على commits الخاصة بك بتذييل Co-Authored-By، وعلى طلبات الـ pull request بسطر Generated with Claude Code. الإعداد الذي يزيلهما، والملف الذي تضعه فيه، وكيف تنظّف الـ commits التي سبق أن دفعتها.

تطلب من Claude Code تنفيذ commit، فتنتهي الرسالة بسطر لم تكتبه: Co-Authored-By: Claude Opus 4.6 <[email protected]>. افتح به pull request، فينتهي الوصف برمز تعبيري لروبوت و«Generated with Claude Code». لا هذا خطأ برمجي ولا ذاك. كلاهما يأتي من إعداد واحد، ويمكنك تغييره في دقيقة.

يتناول هذا الدليل الإعداد، والملف الذي تضعه فيه ليسري عليك أو على مشروع واحد أو على فريق كامل، والمفتاح المُهمَل الذي قد يكون لا يزال لديك، وكيف تنظّف الـ commits التي تحمل السطر أصلًا. المعلومات عن Claude Code مأخوذة من مرجع إعداداته، الذي قرأناه في 12 نوفمبر 2026 مع تثبيت Claude Code 2.1.318.

الجواب المختصر. ضع هذا في ~/.claude/settings.json:

{
  "attribution": {
    "commit": "",
    "pr": ""
  }
}

تتوقف الـ commits الجديدة عن حمل التذييل، وتفقد طلبات الـ pull request الجديدة السطر. أما الـ commits المنشأة قبل التغيير فتحتفظ به إلى أن تعيد كتابتها.

ما يضيفه Claude Code، وأين

يضيف Claude Code الإسناد في ثلاثة مواضع. لكل منها مفتاح فرعي خاص به تحت attribution.

أينما يضيفه Claude Code افتراضيًاالمفتاح الفرعي
رسالة الـ commitتذييل (trailer): Co-Authored-By: <model> <[email protected]>attribution.commit
وصف الـ pull requestرمز تعبيري لروبوت و«Generated with Claude Code»attribution.pr
commit أو PR من جلسة سحابية أو جلسة Remote Controlرابط الجلسة على claude.ai، على شكل تذييل Claude-Session في الـ commitsattribution.sessionUrl

الاسم في التذييل هو اسم النموذج المستخدم لحظة إنشاء الـ commit. لهذا يقول السطر Claude Opus 4.6 في أسبوع وClaude Sonnet 4.6 في الأسبوع التالي، ولهذا تذكر عمليات البحث عن هذه المشكلة نماذج كثيرة. حين يتعرّف Claude Code على نموذج من Claude لكنه لا يستطيع التأكد من إصداره، يكتب Claude وحدها. وحين لا يكون النموذج الذي يقف وراء ANTHROPIC_BASE_URL مخصّص نموذجًا من Claude إطلاقًا، يكتب Claude Code. وحين ينشئ وكيل فرعي الـ commit، يذكر التذييل نموذج ذلك الوكيل الفرعي.

السطر ليس hook في git. يطلب Claude Code من Claude إضافته حين يكتب Claude بنفسه commit أو pull request. أما commit تنشئه أنت بنفسك في طرفية، أو تنشئه أداة أخرى، فلا يحصل عليه أبدًا.

أوقفه بإعداد attribution

يأخذ attribution كائنًا من ثلاثة أجزاء، أو false لها كلها.

القيمةالأثر
"commit": ""لا تذييل في الـ commits
"pr": ""لا سطر إسناد في أوصاف طلبات الـ pull request
"sessionUrl": falseلا رابط جلسة claude.ai في الـ commits وطلبات الـ pull request المنشأة من جلسة سحابية أو جلسة Remote Control
"attribution": falseالثلاثة مخفية دفعة واحدة. يتطلب Claude Code 2.1.281 أو أحدث

الصيغة المختصرة مغرية، لكن اقرأ سطر الإصدار أولًا. إصدار Claude Code الأقدم من 2.1.281 يرفض "attribution": false، ولا يكتفي بتجاهل المفتاح: بل يتخطى ملف الإعدادات الذي يحتويه بأكمله، بما فيه أذوناتك وخطافاتك ونموذجك. إذا كان الملف نفسه يُقرأ على أجهزة بإصدارات مختلفة، فاستخدم الصيغة الطويلة:

{
  "attribution": {
    "commit": "",
    "pr": "",
    "sessionUrl": false
  }
}

شغّل /status للتحقق من تحميل الملف: يسرد سطر Setting sources كل ملف قرأه Claude Code. وإذا واصلت جلسة كانت مفتوحة من قبل إضافة السطر، فابدأ جلسة جديدة.

أي ملف: أنت، أو مشروع واحد، أو الفريق كله

يعمل المفتاح في كل ملفات الإعدادات. والملف هو الذي يحدد على من يسري.

الملفعلى من يسري
~/.claude/settings.jsonعليك أنت، في كل المشاريع على هذا الجهاز
.claude/settings.json في المشروععلى كل من يعمل في المشروع، بمجرد أن تنفّذ commit للملف
.claude/settings.local.json في المشروععليك أنت، في هذا المشروع فقط. يُبقيه Claude Code خارج git حين ينشئه
managed settings تنشرها مؤسستكعلى كل من تنشرها المؤسسة له

حين يضبط ملفان المفتاح، يفوز الأعلى منهما: managed settings، ثم --settings في سطر الأوامر، ثم ملف المشروع المحلي، ثم ملف المشروع المشترك، ثم ملف المستخدم الخاص بك. ومن هذا الترتيب تنتج حالتان. إذا نفّذ فريقك commit لملف يُبقي التذييل عن قصد، فإن ملفك .claude/settings.local.json يتجاوزه بالنسبة لك وحدك دون أن يغيّره لأي شخص آخر. وإذا ضبطت مؤسستك الإسناد في managed settings، فلن يغيّره شيء مما تكتبه.

يمكنك أيضًا أن تطلب من Claude في ملف CLAUDE.md ألا يضيف السطر، ويخبر Claude Code نموذج Claude بأن تعليماتك الخاصة بشأن الإسناد مقدَّمة على أسطره الافتراضية، ما لم يأتِ السطر من managed settings. الفرق في الطبيعة: الإعداد يزيل النص الذي يطلبه Claude Code، أما التعليمة فشيء يقرؤه النموذج ويطبّقه. استخدم الإعداد.

المفتاح القديم includeCoAuthoredBy

قبل attribution، كان المفتاح هو includeCoAuthoredBy. وهو مُهمَل منذ Claude Code 2.0.62 ولا يزال يُقرأ:

  • "includeCoAuthoredBy": false يخفي تذييل الـ commits وسطر طلبات الـ pull request معًا؛
  • بمجرد ضبط attribution.commit أو attribution.pr، يتجاهل Claude Code المفتاح includeCoAuthoredBy ويستخدم نصه الافتراضي لأي من الاثنين تركته دون ضبط.

هذه القاعدة الثانية هي السبب المعتاد لعودة التذييل. كان لديك includeCoAuthoredBy: false، ثم أضفت "attribution": {"pr": ""} لتزيل سطر الـ PR وحده، فيعود تذييل الـ commits إلى الظهور لأن attribution هو من يقرر الآن وcommit غير مضبوط. انتقل إلى attribution واضبط الجزأين كليهما.

استبدله بدلًا من إزالته

بعض الفرق تريد الاحتفاظ بأثر يبيّن أي الـ commits تلقّت مساعدة من الذكاء الاصطناعي، لكن ليس بذلك السطر. يقبل attribution.commit أي نص، بما في ذلك التذييلات. لا يقرأ git التذييلات إلا من الفقرة الأخيرة في الرسالة، لذا أبقها معًا في النهاية:

{
  "attribution": {
    "commit": "Assisted-by: Claude Code"
  }
}

نفّذ commit لهذا في ملف .claude/settings.json الخاص بالمشروع، وسيكتب Claude Code لدى كل زميل في الفريق السطر نفسه.

الـ commits التي تحمل التذييل أصلًا

لا يغيّر الإعداد إلا الـ commits المكتوبة بعده. أما الموجودة أصلًا، فالأداة المناسبة تعتمد على مدى ما وصلت إليه.

آخر commit، ولم يُدفع بعد: عدّله بـ amend واحذف السطر في المحرر.

git commit --amend

عدة commits على فرع لم تشاركه: نفّذ rebase وأعد صياغة كل واحد منها.

git rebase -i origin/main

سجل كامل: يعيد git filter-repo كتابة كل رسائل الـ commits في مرور واحد. يحتاج إلى نسخة clone جديدة، وهو أداة منفصلة يجب تثبيتها:

git filter-repo --message-callback '
return re.sub(rb"(?mi)^Co-Authored-By: Claude[^\n]*<noreply@anthropic\.com>\n?", b"", message).rstrip(b"\n") + b"\n"
'

لإعادة الكتابة ثمن، وعلى فرع مشترك يكون عادة أعلى من ثمن السطر نفسه. كل hash لـ commit يأتي بعد أول commit تغيّر يصبح جديدًا، لذا يحتاج الفرع المدفوع إلى force push، وعلى كل متعاون أن يبدأ من جديد من السجل الجديد، وتتعطل طلبات الـ pull request المفتوحة المبنية على الـ commits القديمة، وتفقد الـ commits الموقّعة توقيعها. على فرع شخصي قبل الدمج، افعلها. وعلى فرع رئيسي سحبه الآخرون، اتركه واضبط المفتاح لما سيأتي.

ما يفعله التذييل على GitHub

يقرأ GitHub تذييلات Co-authored-by ويعرض المؤلف المشارك على الـ commit حين ينتمي عنوان البريد الإلكتروني إلى حساب على GitHub. في يونيو 2025، أبلغت مشكلتان (issues) في مستودع anthropics/claude-code (#1653 و#1655) عن commits نُسبت عبر ذلك العنوان إلى حساب GitHub لا علاقة له بـ Anthropic؛ وكلتاهما مغلقة. وأيًّا كان الحساب الذي يشير إليه العنوان في يوم ما، فإن إزالة التذييل تزيل المؤلف المشارك من الـ commits التي تليها، ومنها وحدها.

ما تفعله أدوات CLI الأخرى

ليس Claude Code الوحيد الذي يوقّع على عمله، ولكل أداة CLI مفتاحها الخاص.

  • Codex. في الشيفرة المصدرية لـ openai/codex التي قرأناها في 12 نوفمبر 2026، يضيف Codex السطر Co-authored-by: Codex <[email protected]> إلى الـ commits، و«Generated with Codex.» إلى نص طلبات الـ pull request، حين يكون الإسناد مفعّلًا لمساحة العمل الخاصة بك، وهي سياسة يجلبها عند بدء الجلسة. وحين تكون السياسة معطّلة، يُطلب من Codex ألا يضيف أيًّا من السطرين.
  • Aider. يُلحق «(aider)» باسمَي المؤلف والمُنفِّذ (committer) في git بدلًا من إضافة تذييل. يوقف --no-attribute-author و--no-attribute-committer ذلك، ويحوّله --attribute-co-authored-by إلى تذييل Co-authored-by بدلًا منه.

ما نفعله في AgentsRoom

نشغّل عدة وكلاء على المستودعات نفسها كل يوم، Claude Code بجانب Codex وغيره، والـ commit هو المكان الذي يلتقي فيه عملهم. هناك حالتان، ولا تتبعان القواعد نفسها.

حين ينفّذ وكيل commit بنفسه في طرفيته، فإن أداة CLI الخاصة به هي من تكتب الرسالة، فيسري إعداد تلك الأداة: attribution لـ Claude Code، وسياسة مساحة العمل لـ Codex، والخيارات لـ Aider.

وحين تنفّذ commit من AgentsRoom، من تبويب Changes، أو وضع المراجعة، أو الـ commit التلقائي عند إغلاق وكيل، أو شاشة Changes في تطبيق الهاتف، فإن AgentsRoom هو من يكتب الـ commit، ولا تضيف أي أداة CLI تذييلها. ما يوضع في الأسفل هو توقيع الـ commit الخاص بـ AgentsRoom، وأنت من يضبطه. افتراضيًا يضيف سطرًا واحدًا فيه دور كل وكيل توجد ملفاته في الـ commit والوقت الذي استغرقه:

bug : Fix the login redirect

AgentsRoom-Agent: fullstack; time=42m

لكل جزء مفتاح منفصل في الإعدادات > Git > تذييل الإيداع، لحسابك، أو لمجلد من المشاريع، أو لمشروع واحد: دور الوكيل، والوقت المستغرق، ثم، وهي معطّلة افتراضيًا، التكلفة وحصتك المستهلكة والمطالبات التي كتبتها. عطّل الوكيل والوقت المستغرق، فتعود الـ commits الخاصة بك تمامًا كما كانت من قبل. نحن نُبقي الدور مفعّلًا في مستودعاتنا: في مستودع تنفّذ فيه أربع أدوات CLI عمليات commit، يقول اسم النموذج أي نموذج كتب الكود، ويقول الدور أي مهمة كان يؤديها، وهذا ما نبحث عنه حين يكسر تغيير ما شيئًا بعد ثلاثة أسابيع. وسجل التغييرات العام لدينا يقرأ السطر نفسه ليُظهر أي الوكلاء عملوا على كل إصدار.

إذا أردت أيضًا المنطق الذي يقف وراء تغيير ما، فإن Commit Context يضيف رابطًا إلى محادثة الوكيل في كتلة التذييلات نفسها. وإذا كنت تفضّل ألا تكتب الرسالة أصلًا، فإن رسائل الـ commit بالذكاء الاصطناعي تصوغها من الـ diff.

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

كيف أزيل Co-Authored-By Claude من الـ commits الخاصة بي؟

أضف "attribution": {"commit": "", "pr": ""} إلى ~/.claude/settings.json. عندها يتوقف Claude Code عن إضافة تذييل Co-Authored-By إلى الـ commits التي يكتبها، وعن إضافة سطر Generated with Claude Code إلى طلبات الـ pull request التي يفتحها، في كل المشاريع على ذلك الجهاز. مع Claude Code 2.1.281 أو أحدث، تخفي القيمة "attribution": false كل شيء دفعة واحدة. أما الـ commits المنشأة قبل التغيير فتحتفظ بتذييلها.

هل ما زال includeCoAuthoredBy يعمل؟

ما زال يعمل، لكنه مُهمَل منذ Claude Code 2.0.62. القيمة includeCoAuthoredBy: false تخفي تذييل الـ commits وسطر طلبات الـ pull request معًا، إلا إذا حدّد المفتاح الأحدث attribution أحد الجزأين commit أو pr، وحينها تكون الكلمة لـ attribution. أي إعداد جديد يستخدم attribution.

لماذا يذكر التذييل Claude Opus 4.6 أو Sonnet 4.6 بدلًا من Claude؟

يذكر التذييل النموذج المستخدم لحظة إنشاء الـ commit، فيتغيّر بتغيّر نموذجك. يكتب Claude Code كلمة Claude وحدها حين لا يستطيع التأكد من الإصدار الدقيق، ويكتب Claude Code حين لا يكون النموذج الذي يقف وراء ANTHROPIC_BASE_URL مخصّص نموذجًا من Claude. والإعداد يزيل كل هذه الصيغ.

كيف أزيل التذييل من commits أنشأتها من قبل؟

لآخر commit، شغّل git commit --amend واحذف السطر. ولعدة commits لم تُدفع بعد، استخدم git rebase -i وأعد صياغتها. ولسجل كامل، يزيل git filter-repo مع message callback السطر من كل commit، على نسخة clone جديدة. إعادة الكتابة تغيّر الـ hash لكل commit يأتي بعد أول commit عدّلته، لذا يحتاج السجل المدفوع إلى force push، وعلى كل متعاون أن ينطلق من السجل الجديد.

هل تستطيع شركتي فرض إعادة تفعيل الإسناد؟

نعم. تقع managed settings التي تنشرها مؤسسة ما فوق كل ملف تتحكم فيه، لذا فإن قيمة attribution المضبوطة هناك تتغلب على إعداداتك على مستوى المستخدم والمشروع والإعدادات المحلية. شغّل /status في Claude Code: يُظهر سطر Setting sources ما إذا كان مصدر مُدار ينطبق عليك.

هل تخفي إزالة التذييل أنني استخدمت الذكاء الاصطناعي؟

إنها تزيل سطرًا واحدًا من رسالة الـ commit، لا أكثر. Claude Code نفسه يقدّم هذا الإعداد، ووثائقه لا تطلب منك الإبقاء على السطر. لكن بعض المشاريع وبعض أصحاب العمل يطلبون من المساهمين الإفصاح عن مساعدة الذكاء الاصطناعي، فاقرأ قواعد المستودع الذي تدفع إليه قبل إيقافه هناك.

مهندس DevOpsكاتب المحتوىمطور الواجهة الأماميةمندوب المبيعاتمطور الخلفيةالمدرب والمرشدمهندس البرمجياتالمستشار القانونيمهندس QAالمالية والإدارةمطور Full-Stackالمصمم الإبداعيمطور الهاتف المحمولالباحثمهندس الأمانالموارد البشرية والتوظيف
مدير المشروعالمترجمخبير Gitمحلل البياناتأخصائي SEOالمحاسبأخصائي التوطينالاتصال والعلاقات العامةمفكرالعمليات والخدمات اللوجستيةأخصائي التسويقدعم العملاءمساعد المشروعمسؤول المشترياتمدير المجتمعالمساعد الشخصي

تحميل AgentsRoom

شغّل كل وكلاء الذكاء الاصطناعي لديك، في كل مشاريعك، من نافذة واحدة.

تحميل AgentsRoomمجاني

التطبيق المرافق: تابع وكلاءك أينما كنت

استخدم Claude أو Codex أو Antigravity CLI أو أي مزود AI آخر.

تثبيت الملحق
Chrome Web Store

أرسل الأخطاء والطلبات مباشرة إلى قائمة المهام العامة.

وكلاء تقرؤهم كأنها محادثة

لكل وكيل دور ووجه وسلسلة رسائل تقرؤها كما في تطبيق المراسلة.

عرض المحادثة

عرض المحادثة في AgentsRoom: عمل وكيل برمجة بالذكاء الاصطناعي على شكل محادثة
مشاريع متعددة
متعدد المزوّدين
وكلاء متعددون
حالة مباشرة
فرق الملفات والـ commit
تطبيق الهاتف
معاينة مباشرة
فرق الوكلاء
أتمتة المتصفح
تطوير موجّه بالـ backlog
مكتبة البرومبت
مكتبة المهارات
عرض جميع الميزات

تابع القراءة