अपने git कमिट से Co-Authored-By Claude कैसे हटाएँ

Claude Code आपके कमिट पर Co-Authored-By trailer और आपके पुल रिक्वेस्ट पर Generated with Claude Code लाइन लगा देता है। इन्हें हटाने वाली सेटिंग, उसे किस फ़ाइल में रखें, और पहले से push किए गए कमिट कैसे साफ़ करें।

आप Claude Code से कमिट करने को कहते हैं, और संदेश एक ऐसी लाइन पर खत्म होता है जो आपने नहीं लिखी: Co-Authored-By: Claude Opus 4.6 <[email protected]>। इससे एक पुल रिक्वेस्ट खोलिए, और विवरण एक रोबोट इमोजी और "Generated with Claude Code" पर खत्म होता है। दोनों में से कोई भी bug नहीं है। दोनों एक ही सेटिंग से आते हैं, और आप इसे एक मिनट में बदल सकते हैं।

यह गाइड बताती है कि सेटिंग क्या है, उसे किस फ़ाइल में रखें ताकि वह आप पर, किसी एक प्रोजेक्ट पर या पूरी टीम पर लागू हो, वह deprecated key जो शायद अब भी आपके पास है, और उन कमिट को कैसे साफ़ करें जिनमें यह लाइन पहले से है। Claude Code के बारे में जानकारी उसके settings reference से ली गई है, जिसे 12 नवंबर 2026 को Claude Code 2.1.318 इंस्टॉल करके पढ़ा गया।

छोटा जवाब। इसे ~/.claude/settings.json में डालें:

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

नए कमिट में trailer नहीं आता, नए पुल रिक्वेस्ट से लाइन हट जाती है। बदलाव से पहले बने कमिट में यह तब तक रहती है जब तक आप उन्हें दोबारा न लिखें।

Claude Code क्या जोड़ता है, और कहाँ

Claude Code तीन जगहों पर attribution जोड़ता है। हर जगह की attribution के नीचे अपनी sub-key है।

कहाँClaude Code डिफ़ॉल्ट रूप से क्या जोड़ता हैSub-key
कमिट संदेशएक trailer: Co-Authored-By: <model> <[email protected]>attribution.commit
पुल रिक्वेस्ट का विवरणएक रोबोट इमोजी और "Generated with Claude Code"attribution.pr
क्लाउड या Remote Control सत्र से बना कमिट या PRclaude.ai सत्र का लिंक, कमिट पर Claude-Session trailer के रूप मेंattribution.sessionUrl

trailer में नाम उस मॉडल का होता है जो कमिट के समय इस्तेमाल हो रहा था। इसीलिए लाइन एक हफ़्ते Claude Opus 4.6 कहती है और अगले हफ़्ते Claude Sonnet 4.6, और इसीलिए इस समस्या की खोजों में इतने सारे मॉडल के नाम आते हैं। जब Claude Code किसी Claude मॉडल को पहचान लेता है लेकिन उसका version पक्का नहीं कर पाता, तो वह सिर्फ़ Claude लिखता है। जब किसी custom ANTHROPIC_BASE_URL के पीछे का मॉडल Claude मॉडल है ही नहीं, तो वह Claude Code लिखता है। जब कोई subagent कमिट करता है, तो trailer उस subagent के मॉडल का नाम लेता है।

यह लाइन कोई git hook नहीं है। Claude Code, Claude से इसे तब जोड़ने को कहता है जब Claude खुद कोई कमिट या पुल रिक्वेस्ट लिखता है। जो कमिट आप खुद टर्मिनल में करते हैं, या जो कोई दूसरा टूल करता है, उसे यह लाइन कभी नहीं मिलती।

attribution सेटिंग से इसे बंद करें

attribution तीन हिस्सों वाला एक object लेता है, या सबके लिए एक साथ false।

वैल्यूअसर
"commit": ""कमिट पर कोई trailer नहीं
"pr": ""पुल रिक्वेस्ट के विवरण में कोई attribution लाइन नहीं
"sessionUrl": falseक्लाउड या Remote Control सत्र से बने कमिट और पुल रिक्वेस्ट पर claude.ai सत्र का कोई लिंक नहीं
"attribution": falseतीनों एक साथ छिप जाते हैं। Claude Code 2.1.281 या उसके बाद का version चाहिए

छोटा रूप लुभावना है, लेकिन पहले version वाली लाइन पढ़ लें। 2.1.281 से पुराना Claude Code "attribution": false को अस्वीकार कर देता है, और वह सिर्फ़ key को अनदेखा नहीं करता: वह उस पूरी सेटिंग्स फ़ाइल को छोड़ देता है जिसमें यह key है, आपकी permissions, hooks और मॉडल समेत। अगर वही फ़ाइल अलग-अलग version वाली मशीनों पर पढ़ी जाती है, तो लंबा रूप इस्तेमाल करें:

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

फ़ाइल लोड हुई या नहीं, यह जाँचने के लिए /status चलाएँ: Setting sources लाइन हर उस फ़ाइल की सूची देती है जिसे Claude Code ने पढ़ा। अगर पहले से खुला कोई सत्र लाइन जोड़ता रहता है, तो नया सत्र शुरू करें।

कौन सी फ़ाइल: आप, एक प्रोजेक्ट, या पूरी टीम

यह key हर सेटिंग्स फ़ाइल में काम करती है। फ़ाइल तय करती है कि यह किस पर लागू होगी।

फ़ाइलकिस पर लागू होती है
~/.claude/settings.jsonआप पर, इस मशीन के हर प्रोजेक्ट में
प्रोजेक्ट में .claude/settings.jsonप्रोजेक्ट में काम करने वाले हर व्यक्ति पर, जैसे ही आप फ़ाइल कमिट करते हैं
प्रोजेक्ट में .claude/settings.local.jsonआप पर, सिर्फ़ इस प्रोजेक्ट में। Claude Code इसे बनाते समय git से बाहर रखता है
आपके संगठन द्वारा लागू की गई managed settingsहर उस व्यक्ति पर जिसके लिए संगठन इन्हें लागू करता है

जब दो फ़ाइलें यह key सेट करती हैं, तो ऊपर वाली जीतती है: managed settings, फिर command line पर --settings, फिर प्रोजेक्ट की local फ़ाइल, फिर प्रोजेक्ट की साझा फ़ाइल, फिर आपकी user फ़ाइल। इस क्रम से दो स्थितियाँ बनती हैं। अगर आपकी टीम ऐसी फ़ाइल कमिट करती है जो trailer को जानबूझकर चालू रखती है, तो आपकी अपनी .claude/settings.local.json उसे सिर्फ़ आपके लिए बदल देती है, बाकी किसी के लिए कुछ बदले बिना। अगर आपका संगठन managed settings में attribution सेट करता है, तो आप कुछ भी लिखें, वह नहीं बदलेगा।

आप अपनी CLAUDE.md में भी Claude से कह सकते हैं कि वह लाइन न जोड़े, और Claude Code, Claude को बताता है कि attribution के बारे में आपके अपने निर्देश उसकी डिफ़ॉल्ट लाइनों से पहले आते हैं, जब तक लाइन managed settings से न आई हो। फ़र्क़ स्वभाव का है: सेटिंग वह टेक्स्ट हटा देती है जिसे Claude Code माँगता है, जबकि निर्देश ऐसी चीज़ है जिसे मॉडल पढ़ता है और लागू करता है। सेटिंग इस्तेमाल करें।

पुरानी includeCoAuthoredBy key

attribution से पहले, यह स्विच includeCoAuthoredBy था। यह Claude Code 2.0.62 से deprecated है और अब भी पढ़ा जाता है:

  • "includeCoAuthoredBy": false कमिट का trailer और पुल रिक्वेस्ट की लाइन, दोनों छिपा देता है;
  • जैसे ही attribution.commit या attribution.pr सेट होता है, Claude Code includeCoAuthoredBy को अनदेखा कर देता है और दोनों में से जो आपने सेट नहीं किया, उसके लिए अपना डिफ़ॉल्ट टेक्स्ट इस्तेमाल करता है।

trailer के लौट आने की आम वजह यही दूसरा नियम है। आपके पास includeCoAuthoredBy: false था, फिर आपने सिर्फ़ PR की लाइन हटाने के लिए "attribution": {"pr": ""} जोड़ा, और कमिट का trailer फिर से दिखने लगता है, क्योंकि अब फ़ैसला attribution करता है और commit सेट नहीं है। attribution पर जाएँ और दोनों हिस्से सेट करें।

हटाने के बजाय इसे बदल दें

कुछ टीमें यह हिसाब रखना चाहती हैं कि किन कमिट में AI की मदद ली गई, बस उस लाइन के साथ नहीं। attribution.commit कोई भी टेक्स्ट स्वीकार करता है, trailers भी। git संदेश के सिर्फ़ आखिरी पैराग्राफ़ से trailers पढ़ता है, इसलिए उन्हें अंत में एक साथ रखें:

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

इसे प्रोजेक्ट की .claude/settings.json में कमिट करें, और टीम के हर सदस्य का Claude Code वही लाइन लिखेगा।

वे कमिट जिनमें trailer पहले से है

सेटिंग सिर्फ़ उसके बाद लिखे गए कमिट को बदलती है। जो पहले से हैं, उनके लिए सही टूल इस पर निर्भर करता है कि वे कितनी दूर जा चुके हैं।

आखिरी कमिट, जो अभी push नहीं हुआ: उसे amend करें और editor में लाइन मिटा दें।

git commit --amend

ऐसी ब्रांच पर कई कमिट जिसे आपने साझा नहीं किया: rebase करें और हर एक को reword करें।

git rebase -i origin/main

पूरी history: git filter-repo एक ही बार में हर कमिट संदेश दोबारा लिखता है। इसे एक नया 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 नया हो जाता है, इसलिए push हो चुकी ब्रांच को force push चाहिए, हर सहयोगी को नई history से फिर शुरू करना पड़ता है, पुराने कमिट पर आधारित खुले पुल रिक्वेस्ट टूट जाते हैं, और signed कमिट अपना signature खो देते हैं। merge से पहले किसी निजी ब्रांच पर, यह कर लें। ऐसी main ब्रांच पर जिसे दूसरे pull कर चुके हैं, इसे छोड़ दें और आगे के लिए key सेट कर दें।

GitHub पर trailer क्या करता है

GitHub Co-authored-by trailers पढ़ता है और जब ईमेल पता किसी GitHub अकाउंट का होता है, तो कमिट पर co-author दिखाता है। जून 2025 में, anthropics/claude-code रिपॉजिटरी के दो इश्यू (#1653 और #1655) ने ऐसे कमिट की रिपोर्ट की जो उस पते के ज़रिए Anthropic से असंबंधित एक GitHub अकाउंट के नाम चढ़ गए थे; दोनों बंद हो चुके हैं। किसी दिन वह पता जिस भी अकाउंट से जुड़ा हो, trailer हटाने से आगे आने वाले कमिट से co-author हट जाता है, और सिर्फ़ उन्हीं से।

दूसरे CLI क्या करते हैं

अपने काम पर हस्ताक्षर करने वाला अकेला Claude Code नहीं है, और हर CLI का अपना स्विच है।

  • Codex. 12 नवंबर 2026 को हमने openai/codex का जो source पढ़ा, उसमें Codex कमिट में Co-authored-by: Codex <[email protected]> और पुल रिक्वेस्ट के body में "Generated with Codex." जोड़ता है, जब आपके workspace के लिए attribution चालू हो, यह एक policy है जिसे वह सत्र शुरू होने पर लाता है। जब policy बंद होती है, तो Codex से कहा जाता है कि वह दोनों में से कोई भी लाइन न जोड़े।
  • Aider. यह trailer जोड़ने के बजाय git author और committer के नामों के आगे "(aider)" जोड़ देता है। --no-attribute-author और --no-attribute-committer इसे बंद करते हैं, और --attribute-co-authored-by इसकी जगह Co-authored-by trailer पर स्विच कर देता है।

हम AgentsRoom में क्या करते हैं

हम हर दिन एक ही रिपॉजिटरी पर कई एजेंट चलाते हैं, Codex और दूसरों के बगल में Claude Code, और कमिट वह जगह है जहाँ उनका काम मिलता है। दो स्थितियाँ हैं, और वे एक जैसे नियम नहीं मानतीं।

जब कोई एजेंट अपने टर्मिनल में खुद कमिट करता है, तो संदेश उसका CLI लिखता है, इसलिए उस CLI की अपनी सेटिंग लागू होती है: Claude Code के लिए attribution, Codex के लिए workspace की policy, Aider के लिए flags।

जब आप AgentsRoom से कमिट करते हैं, Changes टैब से, रिव्यू मोड से, किसी एजेंट के बंद होने पर होने वाले ऑटो-कमिट से या मोबाइल ऐप की Changes स्क्रीन से, तो कमिट AgentsRoom लिखता है और कोई CLI अपना trailer नहीं जोड़ता। नीचे जो जाता है, वह AgentsRoom का कमिट सिग्नेचर है, और उसे सेट करना आपके हाथ में है। डिफ़ॉल्ट रूप से यह एक लाइन जोड़ता है, जिसमें हर उस एजेंट की भूमिका होती है जिसकी फ़ाइलें कमिट में हैं और उसका लगा समय:

bug : Fix the login redirect

AgentsRoom-Agent: fullstack; time=42m

हर हिस्सा सेटिंग्स > Git > कमिट सिग्नेचर में एक अलग स्विच है, आपके अकाउंट के लिए, प्रोजेक्ट के किसी फ़ोल्डर के लिए या किसी एक प्रोजेक्ट के लिए: एजेंट की भूमिका, लगा समय, और, डिफ़ॉल्ट रूप से बंद, लागत, आपके कोटा का हिस्सा और आपके टाइप किए प्रॉम्प्ट। एजेंट और लगा समय बंद कर दें, और आपके कमिट ठीक वैसे ही हो जाते हैं जैसे पहले थे। हम अपनी रिपॉजिटरी में भूमिका चालू रखते हैं: जिस रिपॉजिटरी में चार CLI कमिट करते हैं, वहाँ मॉडल का नाम बताता है कि कोड किस मॉडल ने लिखा, और भूमिका बताती है कि वह कौन सा काम कर रहा था, और जब कोई बदलाव तीन हफ़्ते बाद कुछ तोड़ देता है तो हम यही ढूँढते हैं। हमारा सार्वजनिक changelog यही लाइन पढ़कर दिखाता है कि हर रिलीज़ पर किन एजेंटों ने काम किया।

अगर आपको किसी बदलाव के पीछे का तर्क भी चाहिए, तो Commit Context उसी trailer ब्लॉक में एजेंट की बातचीत का लिंक जोड़ता है। और जब आप संदेश लिखना ही नहीं चाहते, तो AI कमिट संदेश उसे diff से तैयार कर देता है।

अक्सर पूछे जाने वाले सवाल

मैं अपने कमिट से Co-Authored-By Claude कैसे हटाऊँ?

~/.claude/settings.json में "attribution": {"commit": "", "pr": ""} जोड़ें। इसके बाद Claude Code अपने लिखे कमिट में Co-Authored-By trailer और अपने खोले पुल रिक्वेस्ट में Generated with Claude Code लाइन जोड़ना बंद कर देता है, उस मशीन के हर प्रोजेक्ट में। Claude Code 2.1.281 या उसके बाद के version पर, "attribution": false एक ही वैल्यू में सब कुछ छिपा देता है। बदलाव से पहले बने कमिट अपना trailer बनाए रखते हैं।

क्या includeCoAuthoredBy अब भी काम करता है?

यह अब भी काम करता है, लेकिन Claude Code 2.0.62 से deprecated है। includeCoAuthoredBy: false कमिट का trailer और पुल रिक्वेस्ट की लाइन, दोनों छिपा देता है, जब तक नई attribution key commit या pr सेट न करे; ऐसा होने पर attribution की बात चलती है। नए कॉन्फ़िगरेशन में attribution इस्तेमाल करें।

trailer में Claude की जगह Claude Opus 4.6 या Sonnet 4.6 क्यों लिखा होता है?

trailer उस मॉडल का नाम लिखता है जो कमिट के समय इस्तेमाल हो रहा था, इसलिए यह आपके मॉडल के साथ बदलता है। जब Claude Code सटीक version पक्का नहीं कर पाता, तो वह सिर्फ़ Claude लिखता है, और जब किसी custom ANTHROPIC_BASE_URL के पीछे का मॉडल Claude मॉडल नहीं होता, तो Claude Code लिखता है। सेटिंग इन सभी रूपों को हटा देती है।

पहले से बने कमिट से trailer कैसे हटाऊँ?

आखिरी कमिट के लिए git commit --amend चलाएँ और लाइन मिटा दें। कई ऐसे कमिट के लिए जो अभी push नहीं हुए, git rebase -i इस्तेमाल करें और उन्हें reword करें। पूरी history के लिए, message callback के साथ git filter-repo हर कमिट से लाइन हटा देता है, एक नए clone पर। दोबारा लिखने पर, सबसे पहले बदले गए कमिट से आगे के हर कमिट का hash बदल जाता है, इसलिए push हो चुकी history को force push चाहिए, और हर सहयोगी को नई history से शुरू करना पड़ता है।

क्या मेरी कंपनी attribution को ज़बरदस्ती फिर से चालू कर सकती है?

हाँ। किसी संगठन द्वारा लागू की गई managed settings उन सभी फ़ाइलों से ऊपर होती हैं जिन्हें आप नियंत्रित करते हैं, इसलिए वहाँ सेट की गई attribution वैल्यू आपकी user, प्रोजेक्ट और local सेटिंग्स पर भारी पड़ती है। Claude Code में /status चलाएँ: Setting sources लाइन दिखाती है कि कोई managed source आप पर लागू होता है या नहीं।

क्या trailer हटाने से यह छिप जाता है कि मैंने AI इस्तेमाल किया?

यह कमिट संदेश से एक लाइन हटाता है, इससे ज़्यादा कुछ नहीं। Claude Code खुद यह सेटिंग देता है और उसका documentation आपसे लाइन रखने के लिए नहीं कहता। फिर भी कुछ प्रोजेक्ट और कुछ employers योगदान देने वालों से AI की मदद बताने को कहते हैं, इसलिए जिस रिपॉजिटरी में आप push करते हैं, वहाँ इसे बंद करने से पहले उसके नियम पढ़ लें।

डेवऑप्स इंजीनियरकंटेंट राइटरफ्रंटएंड डेवलपरसेल्स एग्ज़ीक्यूटिवबैकएंड डेवलपरकोच और ट्रेनरसॉफ़्टवेयर आर्किटेक्टकानूनी सलाहकारQA इंजीनियरवित्त और प्रशासनफुल-स्टैक डेवलपरक्रिएटिव डिज़ाइनरमोबाइल डेवलपरशोधकर्तासुरक्षा इंजीनियरHR और भर्ती
प्रोजेक्ट मैनेजरअनुवादकGit विशेषज्ञडेटा एनालिस्टSEO विशेषज्ञअकाउंटेंटस्थानीयकरण विशेषज्ञसंचार और PRब्रेनस्टॉर्मरऑपरेशंस और लॉजिस्टिक्समार्केटिंग विशेषज्ञकस्टमर सपोर्टप्रोजेक्ट सहायकक्रय अधिकारीकम्युनिटी मैनेजरपर्सनल असिस्टेंट

AgentsRoom डाउनलोड करें

अपने सभी AI एजेंट्स को, अपने सभी प्रोजेक्ट्स पर, एक ही विंडो से चलाएं।

AgentsRoom डाउनलोड करेंमुफ़्त

कंपेनियन ऐप: चलते-फिरते अपने एजेंट्स मॉनिटर करें

Claude, Codex, Antigravity CLI या किसी अन्य AI प्रदाता का उपयोग करें।

एक्सटेंशन इंस्टॉल करें
Chrome Web Store

बग और अनुरोध सीधे अपने सार्वजनिक बैकलॉग में भेजें।

ऐसे एजेंट जिन्हें आप बातचीत की तरह पढ़ते हैं

हर एजेंट की एक भूमिका, एक चेहरा और एक थ्रेड है, जिसे आप मैसेजिंग ऐप की तरह पढ़ते हैं।

बातचीत व्यू

AgentsRoom का बातचीत व्यू: AI कोडिंग एजेंट का काम चैट थ्रेड के रूप में
मल्टी-प्रोजेक्ट
मल्टी-प्रोवाइडर
मल्टी-एजेंट
लाइव स्टेटस
फाइल डिफ और कमिट
मोबाइल ऐप
लाइव प्रीव्यू
एजेंट टीमें
ब्राउज़र ऑटोमेशन
बैकलॉग-संचालित डेव
प्रॉम्प्ट लाइब्रेरी
स्किल्स लाइब्रेरी
सभी सुविधाएँ देखें

पढ़ते रहें