ما الذي يتحكم فعليًا في البريد الإلكتروني على الالتزام
يُحدَّد بريد المؤلف (author email) للالتزام بواسطة إعدادات Git على الجهاز الذي ينشئ الالتزام، وليس بواسطة البريد المعروض في ملفك الشخصي على GitHub. بريد ملفك الشخصي على GitHub إعداد منفصل يُستخدم للإشعارات واستعادة الحساب وبعض إجراءات واجهة الويب. إذا كنت تُنشئ التزامًا من الطرفية، فإن العنوان المكتوب في كائن الالتزام (commit object) يأتي من قيمة user.email المحلية لديك. هذا التمييز هو جوهر الأمر: تغيير بريد ملفك الشخصي لا يفعل شيئًا للالتزامات المستقبلية من سطر الأوامر، وتغيير إعدادات Git المحلية لا يفعل شيئًا للالتزامات المدفوعة مسبقًا.
تتحكم إعدادات Git في البريد الإلكتروني المرفق بالالتزامات المستقبلية التي تُنشأ من سطر الأوامر. المصدر
قبل أن تغيّر أي شيء، افهم ما تدققه. أنت لا تحاول محو بريدك الإلكتروني من GitHub. أنت تحاول تحديد أي عنوان يجب أن يظهر على الالتزامات التي تنشئها من الآن فصاعدًا، وما إذا كانت أي من مستودعاتك لا تزال تعتمد على العنوان القديم للإسناد أو الأدوات.
الخطوة 1: افحص الهوية التي تحملها التزاماتك حاليًا
ابدأ بالنظر إلى ما تحتويه التزاماتك الأخيرة فعليًا. في مستودع تملكه، شغّل سجلًا يعرض حقلي بريد المؤلف والمُلتزم (author and committer email) لعدة التزامات أخيرة. الهدف هو رؤية سلسلة العنوان الدقيقة، وليس الحكم على ما إذا كانت حساسة بعد. افعل ذلك في كل مستودع تدفع منه من سطر الأوامر، لأن الإعدادات المحلية يمكن أن تختلف لكل مستودع.
بعد ذلك، تحقق من الإعدادات الفعالة التي سيستخدمها Git في ذلك المستودع. يحل Git الإعدادات من نطاقات متعددة، وقيمة على مستوى المستودع تتجاوز القيمة العامة. إذا رأيت عنوانًا لا تعرفه، فقد يأتي من إعداد محلي في المستودع، أو من ملف إعدادات مُضمَّن، أو من متغير بيئة في صدفتك. سجّل ما تجده قبل التعديل؛ فالتدقيق الذي لا يمكنك إعادة إنتاجه ليس تدقيقًا.
الخطوة 2: افصل الإعدادين في ذهنك
استخدم جدول القرار هذا لإبقاء إعداد الملف الشخصي وإعداد الالتزام منفصلين. يصف آليات عامة يمكنك التحقق منها في حسابك وطرفيتك؛ ولا يؤكد تسميات قوائم محددة أو مسارات واجهة مستخدم حالية.
| السؤال | يحكمه | ما يؤثر عليه التغيير | ما لا يؤثر عليه |
|---|---|---|---|
| أي بريد يظهر في ملفي الشخصي على GitHub؟ | إعدادات بريد حساب GitHub | عرض الملف الشخصي، الإشعارات، استعادة الحساب | بريد المؤلف على الالتزامات التي تنشئها محليًا |
| أي بريد يُكتب في التزام جديد؟ | إعدادات user.email المحلية في Git | الالتزامات المستقبلية من ذلك الجهاز أو المستودع | الالتزامات التي أُنشئت أو دُفعت بالفعل |
| هل ستتغير الالتزامات القديمة إذا انتقلت إلى noreply؟ | لا شيء تلقائي | لا شيء | كائنات الالتزام الموجودة تحتفظ ببريد المؤلف الأصلي |
| هل يمكنني إخفاء بريدي من الالتزامات العامة المستقبلية؟ | إعدادات Git المحلية بالإضافة إلى عنوان noreply | الالتزامات الجديدة التي تؤلفها بعد التغيير | التاريخ السابق، والتفرعات، والنسخ المخزنة مؤقتًا في مكان آخر |
الخلاصة العملية للجدول: لديك رافعتان مستقلتان. اسحب رافعة الالتزام إذا كان قلقك يتعلق بالدفعات المستقبلية. لا تتوقع أن تقوم رافعة الملف الشخصي بهذا العمل.
الخطوة 3: اختر عنوان noreply وقم بإعداده محليًا
يوفر GitHub خيار عنوان noreply. التنسيق الدقيق موثق من GitHub ويمكن أن يتغير بمرور الوقت، لذا انسخ العنوان من إعدادات حسابك بدلًا من منشور مدونة. بمجرد حصولك عليه، عيّنه كبريد الالتزام في النطاق الذي يناسب سير عملك.
تسلسل آمن:
- انسخ عنوان noreply الذي يوفره GitHub من إعدادات حسابك.
- حدد النطاق: عيّنه عالميًا إذا كان يجب أن تستخدمه كل المستودعات على الجهاز، أو عيّنه لكل مستودع إذا كنت تساهم في مشاريع تتوقع هوية مختلفة.
- طبّق الإعداد باستخدام
git configفي النطاق المختار. - أنشئ التزامًا تجريبيًا في فرع مؤقت وافحص بريد المؤلف قبل الدفع.
- ادفع فقط بعد أن يُظهر الالتزام التجريبي عنوان noreply.
يوفر GitHub خيار عنوان noreply؛ وتغيير العنوان المُعدّ لا يعيد كتابة الالتزامات الموجودة. المصدر
هذه النقطة الثانية هي التي يغفل عنها الناس. الانتقال إلى noreply هو تحكم استباقي. لا يعيد كتابة الالتزامات الموجودة، ولا يزيل عنوانك القديم من كائنات الالتزام العامة بالفعل. إذا تم تفريع مستودع أو نسخه، فإن تلك النسخ تحتفظ ببيانات الالتزام الأصلية بغض النظر عما تعده اليوم.
الخطوة 4: تحقق من سلوك واجهة الويب والأدوات بشكل منفصل
الالتزامات التي تُنشأ عبر واجهة ويب GitHub، أو بواسطة الروبوتات والتكاملات، قد تستخدم مسار هوية مختلفًا عن طرفيتك المحلية. لا تفترض أن تغيير الإعدادات المحلية يغطي كل التزام يصل إلى المستودع. راجع حقول المؤلف على الالتزامات من مصادر مختلفة، ولاحظ أيها تتحكم فيه مباشرة. بالنسبة للتكاملات التي لا تتحكم فيها، الإجابة الصادقة هي أنك لا تستطيع تعيين هوية الالتزام الخاصة بها من حاسوبك المحمول؛ يمكنك فقط أن تقرر ما إذا كنت ستستمر في استخدام ذلك التكامل.
الخطوة 5: قرر ما ستفعله بشأن التاريخ القديم
لديك ثلاثة خيارات واقعية، ولا شيء منها هو “جعل التعرض القديم يختفي”.
| الخيار | ما يفعله | التكلفة والحدود |
|---|---|---|
| اترك التاريخ كما هو | لا خطر لكسر الاستنساخات أو المراجع | الالتزامات القديمة تحتفظ ببريد المؤلف الأصلي |
| أعد كتابة التاريخ في مستودعك | يغيّر كائنات الالتزام من الآن فصاعدًا في ذلك المستودع | إعادة الكتابة مزعجة، ولا تصل إلى التفرعات أو النسخ، وهي خارج نطاق معظم المستخدمين |
| أزل أو بدّل العنوان المكشوف | يقلل التعرض المستقبلي إذا كان العنوان لا يزال نشطًا | لا يغيّر الالتزامات التي تحتويه بالفعل |
لمعظم القراء، الخطوة الصحيحة هي الأولى أو الثالثة: توقف عن إضافة العنوان إلى الالتزامات الجديدة، وتعامل مع الالتزامات القديمة كأنها عامة بشكل دائم. إذا كان العنوان المكشوف هو الذي لا تزال تستخدمه لتسجيل الدخول أو الاستعادة، ففكر فيما إذا كان يجب أن يظل مرتبطًا بالحساب على الإطلاق. هذا قرار أمن حساب، وليس قرار إعدادات Git.
أخطاء شائعة
- تغيير بريد الملف الشخصي وافتراض أن الالتزامات قد أُصلحت. إعداد الملف الشخصي وهوية الالتزام منفصلان. ستظل التزامات الطرفية المستقبلية تحمل العنوان القديم حتى تغيّر إعدادات Git المحلية.
- تعيين noreply عالميًا دون التحقق من تجاوزات المستودع. قيمة
user.emailالمحلية في المستودع ستتغلب على قيمتك العالمية. دقق كل مستودع تدفع منه. - دفع التزام تجريبي إلى فرع عام. تحقق من بريد المؤلف على فرع مؤقت أو باستخدام سجل محلي قبل الدفع.
- الاعتقاد بأن تبديل noreply يمحو التاريخ. لا يعيد كتابة الالتزامات الموجودة، ولا يمكنه الوصول إلى التفرعات أو النسخ أو النسخ المخزنة مؤقتًا.
- افتراض أن كل مصدر التزام تحت سيطرتك. التزامات واجهة الويب والتكاملات قد تستخدم هويات مختلفة؛ افحصها بدلًا من الافتراض.
- التعامل مع الملف الشخصي المعدّل كأنه حذف. تغيير ما يعرضه ملفك الشخصي لا يحذف البيانات المخزنة ولا يغيّر كائنات الالتزام.
حماية بصمتك الخاصة
بريد الالتزام قناة ضيقة واحدة. تشمل بصمتك العامة أيضًا المعرّفات والملفات الشخصية المرتبطة بذلك العنوان عبر منصات أخرى. إذا كنت تدقق عنوانًا لأنه ظهر في مكان عام، فإن الخطوة التالية المفيدة هي معرفة الحسابات العامة المرتبطة به. يشرح دليل TruthsSeek حول كيفية العثور على الحسابات المرتبطة بعنوان بريد إلكتروني عملية المراجعة تلك، وصفحة البحث في GitHub على /find/github/ هي نقطة بداية للتحقق من معرّف معروف. يفحص TraceSeek، التطبيق الذي يغطيه TruthsSeek، اسم المستخدم عبر 3,000+ منصة ويقدم فحصًا أوليًا مجانيًا؛ وتذكر المنتج أن الفحص يستغرق 20–30 ثانية. تُظهر هذه الأدوات التطابقات العامة كخيوط تحقيق، وليست دليلًا على الملكية، وهي لا تغيّر إعدادات المنصات ولا تكشف السجلات الخاصة. استخدمها لرسم ما هو عام بالفعل، ثم قم بإجراء تغييرات الإعدادات على المنصات نفسها.
روتين واقعي: أصلح هوية Git المحلية مرة واحدة، وتحقق منها بالتزام تجريبي، ثم أعد فحص حقول المؤلف بشكل دوري على الالتزامات من أدوات أو أجهزة جديدة. تعامل مع كل التزام مدفوع كبيانات عامة دائمة، لأنه في الممارسة العملية عادة ما يكون كذلك.
حقائق رئيسية
- تتحكم إعدادات Git في البريد الإلكتروني المرفق بالالتزامات المستقبلية التي تُنشأ من سطر الأوامر.
- يوفر GitHub خيار عنوان noreply؛ وتغيير العنوان المُعدّ لا يعيد كتابة الالتزامات الموجودة.
- إعداد بريد الملف الشخصي على GitHub وإعداد بريد الالتزام المحلي في Git هما أداتان منفصلتان بتأثيرات مختلفة.
- يفحص TraceSeek أسماء المستخدمين عبر 3,000+ منصة ويقدم فحصًا أوليًا مجانيًا، مع وقت فحص معلن من المنتج قدره 20–30 ثانية.
- تطابقات اسم المستخدم العامة هي خيوط تحقيق، وليست دليلًا على ملكية الحساب.