كيفية إزالة البريد الإلكتروني الشخصي من Git Commits

كيفية إزالة البريد الإلكتروني الشخصي من Git Commits
كيفية إزالة البريد الإلكتروني الشخصي من Git Commits

حماية خصوصية بريدك الإلكتروني على GitHub

يمكن أن يكون كشف بريدك الإلكتروني الشخصي في التزامات GitHub مصدر قلق يتعلق بالخصوصية، خاصة عند العمل على المستودعات العامة. إذا قمت بفتح طلب سحب (PR) تم دمجه ولاحظت أن بريدك الإلكتروني الشخصي مرئي، فمن المهم اتخاذ خطوات لإخفائه.

في هذا الدليل، سوف نستكشف طرقًا مختلفة لإزالة أو إخفاء عنوان بريدك الإلكتروني من العرض العام بعد دمج العلاقات العامة. سنناقش أيضًا ما إذا كان المشرفون لديهم القدرة على تغيير معلومات الالتزام وكيفية تعديل التزاماتك بشكل فعال.

يأمر وصف
git filter-branch إعادة كتابة سجل الالتزام لتغيير معلومات المؤلف والملتزم في مستودع Git.
export GIT_AUTHOR_NAME يضبط اسم المؤلف للالتزامات التي تتم إعادة كتابتها في عملية فرع التصفية.
export GIT_AUTHOR_EMAIL يضبط البريد الإلكتروني للمؤلف للالتزامات التي تتم إعادة كتابتها في عملية فرع التصفية.
wget تنزيل الملفات من الإنترنت، المستخدمة هنا لتنزيل أداة BFG Repo-Cleaner.
bfg-1.13.0.jar ملف أرشيف Java الخاص بـ BFG Repo-Cleaner، والذي يبسط عملية تنظيف سجل المستودع.
--replace-text أمر BFG Repo-Cleaner لاستبدال نص محدد (عناوين البريد الإلكتروني) في سجل المستودع.
git reflog expire تنتهي صلاحية الإدخالات في سجل إعادة التسجيل، وهو أمر مفيد لتنظيف المراجع لإعادة كتابة التاريخ.
git gc --prune=now يقوم بجمع البيانات المهملة وتقليم الكائنات التي لا يمكن الوصول إليها على الفور، ويتم استخدامها بعد إعادة كتابة السجل.
git commit --amend يعدل الالتزام الأحدث بمعلومات المؤلف الجديدة أو التغييرات في محتوى الالتزام.

إزالة البريد الإلكتروني الشخصي من Git Commits

قدمت البرامج النصية المساعدة في إزالة معلومات البريد الإلكتروني الشخصية من التزامات Git بعد دمج طلب السحب. يستخدم البرنامج النصي الأول git filter-branch لإعادة كتابة التاريخ الالتزام. يتكرر هذا الأمر خلال كل التزام، للتحقق مما إذا كان البريد الإلكتروني للمؤلف أو المرسل يتطابق مع البريد الإلكتروني القديم. إذا حدث ذلك، فسيتم استبداله بالبريد الإلكتروني الجديد المجهول المصدر. بعد إعادة كتابة سجل الالتزام، يلزم الدفع بقوة لتحديث المستودع البعيد. ال export GIT_AUTHOR_EMAIL و export GIT_COMMITTER_EMAIL تعتبر الأوامر حاسمة هنا للتأكد من أن الالتزامات المعاد كتابتها تحتوي على معلومات البريد الإلكتروني الصحيحة.

النص الثاني يستفيد BFG Repo-Cleaner، وهو بديل أبسط وأسرع لفرع التصفية. باستخدام --replace-text الأمر، يمكن لـ BFG استبدال كافة مثيلات البريد الإلكتروني القديم بالجديد طوال تاريخ المستودع. بعد الاستبدال، يقوم البرنامج النصي بتنفيذ عملية جمع البيانات المهملة باستخدام git gc --prune=now لتنظيف أي بيانات متبقية. يركز البرنامج النصي الثالث على تعديل الالتزام الأخير باستخدام git commit --amend، والذي يسمح بإجراء تغييرات سريعة على معلومات المؤلف دون إعادة كتابة السجل بأكمله.

استخدام Git Filter-Branch لإعادة كتابة سجل الالتزام

استخدام البرمجة النصية لـ Shell مع Git

#!/bin/sh

# Ensure you have a clean working directory
git checkout main

# Rewrite the commit history to change the author email
git filter-branch --env-filter \
'
OLD_EMAIL="my.personal@email.me"
CORRECT_NAME="My Username"
CORRECT_EMAIL="12345678+username@users.noreply.github.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

# Force push the changes to the repository
git push --force --tags origin 'refs/heads/*'

استخدام BFG Repo-Cleaner لإزالة البريد الإلكتروني بشكل أسهل

استخدام Java مع BFG Repo-Cleaner

# Download BFG Repo-Cleaner
wget https://repo1.maven.org/maven2/com/madgag/bfg/1.13.0/bfg-1.13.0.jar

# Run BFG to replace the old email with the new one
java -jar bfg-1.13.0.jar --replace-text 'my.personal@email.me==12345678+username@users.noreply.github.com' .

# Cleanup and perform garbage collection
git reflog expire --expire=now --all && git gc --prune=now --aggressive

# Push the changes to the remote repository
git push --force

تعديل الالتزام الأخير لتغيير البريد الإلكتروني

استخدام سطر أوامر Git للتعديل البسيط

# Change the email for the last commit
git commit --amend --author="My Username <12345678+username@users.noreply.github.com>"

# Push the amended commit to the repository
git push --force

ضمان الخصوصية بعد دمج طلب السحب

هناك جانب آخر يجب مراعاته عند محاولة إزالة البريد الإلكتروني الشخصي من التزامات Git وهو استخدام GitHub’s personal email settings. من خلال تكوين عميل Git الخاص بك لاستخدام عنوان بريد إلكتروني خاص يقدمه GitHub، يمكنك تجنب كشف بريدك الإلكتروني الحقيقي في عمليات الالتزام المستقبلية. يمكن القيام بذلك عن طريق ضبط بريدك الإلكتروني على التنسيق username@users.noreply.github.com. بالإضافة إلى ذلك، يضمن تمكين خصوصية البريد الإلكتروني في إعدادات GitHub استخدام بريدك الإلكتروني الخاص في عمليات Git المستندة إلى الويب.

بالنسبة للالتزامات التي تم دفعها ودمجها بالفعل، يتمتع مشرفو GitHub بسلطة محدودة لتغيير بيانات الالتزام التاريخية. ومع ذلك، يمكنهم المساعدة من خلال فرض سياسات المستودع التي تشجع أو تطلب من المساهمين استخدام رسائل البريد الإلكتروني الخاصة. في الحالات القصوى، قد يساعدون في إزالة البيانات الحساسة، ولكن هذا يتضمن عادةً إعادة كتابة السجل، مما قد يؤثر على جميع المساهمين.

الأسئلة المتداولة حول خصوصية البريد الإلكتروني في التزامات Git

  1. كيف يمكنني منع كشف بريدي الإلكتروني في عمليات الالتزام المستقبلية؟
  2. اضبط بريدك الإلكتروني على username@users.noreply.github.com في تكوين Git الخاص بك.
  3. هل يمكنني تغيير البريد الإلكتروني للالتزامات المدفوعة بالفعل؟
  4. نعم، يمكنك استخدام git filter-branch أو BFG Repo-Cleaner لإعادة كتابة سجل الالتزام وتغيير البريد الإلكتروني.
  5. ما هي أسهل طريقة لإخفاء بريدي الإلكتروني في الالتزامات المستقبلية؟
  6. قم بتكوين حساب GitHub الخاص بك لاستخدام بريد إلكتروني خاص، وقم بتعيين البريد الإلكتروني لعميل Git الخاص بك على username@users.noreply.github.com.
  7. هل تعديل الالتزام يغير تاريخه؟
  8. نعم، git commit --amend يغير الالتزام الأحدث، والذي يمكن فرضه لتحديث المستودع.
  9. هل يمكن لمشرفي المستودعات تغيير معلومات الالتزام الخاصة بي؟
  10. يتمتع المشرفون بقدرة محدودة على تغيير سجل الالتزام ولكن يمكنهم فرض سياسات الخصوصية على الالتزامات المستقبلية.
  11. هل من الآمن إعادة كتابة تاريخ الالتزام؟
  12. يمكن أن تؤثر إعادة كتابة التاريخ على التعاون، لذا يجب أن يتم ذلك بعناية، ومن الأفضل أن يتم ذلك في بيئة خاضعة للرقابة.
  13. ما هو تأثير التغييرات في دفع القوة؟
  14. يمكن أن يؤدي الدفع بالقوة إلى الكتابة فوق التاريخ، الأمر الذي قد يربك المتعاونين، لذا تواصل بوضوح قبل القيام بذلك.
  15. هل يمكن فرض خصوصية البريد الإلكتروني عبر المؤسسة بأكملها؟
  16. نعم، يمكن لمؤسسات GitHub وضع السياسات واستخدام أدوات مثل pre-commit hooks لضمان خصوصية البريد الإلكتروني.
  17. ما هي الخطافات المسبقة الالتزام؟
  18. خطافات الالتزام المسبق هي نصوص برمجية يتم تشغيلها قبل إنشاء الالتزام، مما يضمن استيفائها لمعايير معينة مثل استخدام بريد إلكتروني خاص.

الأفكار النهائية حول خصوصية البريد الإلكتروني في التزامات Git

تعد حماية معلوماتك الشخصية أمرًا ضروريًا، خاصة عند المساهمة في المستودعات العامة. من خلال تكوين إعدادات Git الخاصة بك لاستخدام عنوان خاص واستخدام أدوات مثل git filter-branch و BFG Repo-Cleaner، يمكنك إزالة البيانات الشخصية بشكل فعال من سجل الالتزام. في حين أن مشرفي المستودعات لديهم سلطة محدودة لتغيير معلومات الالتزام، إلا أنهم يمكنهم دعم ممارسات الخصوصية. تأكد دائمًا من إبلاغ فريقك بأي إعادة كتابة للسجل لتجنب الارتباك. باستخدام هذه الطرق، يمكنك الحفاظ على خصوصيتك أثناء المساهمة في المشاريع مفتوحة المصدر.