كيف تزيل 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 في الـ commits | attribution.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 نفسه يقدّم هذا الإعداد، ووثائقه لا تطلب منك الإبقاء على السطر. لكن بعض المشاريع وبعض أصحاب العمل يطلبون من المساهمين الإفصاح عن مساعدة الذكاء الاصطناعي، فاقرأ قواعد المستودع الذي تدفع إليه قبل إيقافه هناك.
تحميل AgentsRoom
شغّل كل وكلاء الذكاء الاصطناعي لديك، في كل مشاريعك، من نافذة واحدة.
التطبيق المرافق: تابع وكلاءك أينما كنت
استخدم Claude أو Codex أو Antigravity CLI أو أي مزود AI آخر.
أرسل الأخطاء والطلبات مباشرة إلى قائمة المهام العامة.
وكلاء تقرؤهم كأنها محادثة
لكل وكيل دور ووجه وسلسلة رسائل تقرؤها كما في تطبيق المراسلة.

تابع القراءة
الـ mods في Claude Code: ما هي، والـ mod الذي نُرفقه بكل وكيل
الـ mod إضافة يعمل كود JavaScript الخاص بها داخل Claude Code. ما الذي يستطيع فعله، وملفاته الثلاثة، وكيف تحمّله وتختبره، والـ mod الموجود في كل وكيل من وكلائنا.
اقرأ المقالتقليل استهلاك توكنات MCP: كيف خفّضنا تعريفات أدواتنا بنسبة 60%
كل أداة MCP يستطيع وكيلك استدعاءها هي كتلة من JSON قد يقرؤها النموذج في كل طلب. كانت أدواتنا تزن نحو 95,000 توكن. إليك كيف تقيس أدواتك في دقيقتين، وما حذفناه دون إزالة أداة واحدة، وفحص الميزانية الذي يمنعها من التضخم مجدداً.
اقرأ المقالما أفضل ذكاء اصطناعي للبرمجة؟ ما يطلقه 1,200 مطوّر فعلًا
205,366 عملية إطلاق لوكلاء خلال 28 يومًا: Opus أولًا، وGPT-6.1 Sol ثانيًا، ونصف الحسابات على نموذج نقترحه افتراضيًا. ما تثبته الأرقام، وما لا تستطيع إثباته.
اقرأ المقال