Git Taahhütlerinden Kişisel E-posta Nasıl Kaldırılır

Git Taahhütlerinden Kişisel E-posta Nasıl Kaldırılır
Git Taahhütlerinden Kişisel E-posta Nasıl Kaldırılır

GitHub'da E-posta Gizliliğinizi Koruma

Kişisel e-postanızın GitHub taahhütlerinde açığa çıkması, özellikle halka açık depolarda çalışırken gizlilik açısından endişe verici olabilir. Birleştirilmiş bir çekme isteği (PR) açtıysanız ve kişisel e-postanızın görünür olduğunu fark ettiyseniz, onu gizlemek için gerekli adımları atmanız önemlidir.

Bu kılavuzda, PR birleştirildikten sonra e-posta adresinizi genel görünümden kaldırmak veya gizlemek için çeşitli yöntemleri inceleyeceğiz. Ayrıca bakımcıların taahhüt bilgilerini değiştirme becerisine sahip olup olmadığını ve taahhütlerinizi etkili bir şekilde nasıl değiştirebileceğinizi de tartışacağız.

Emretmek Tanım
git filter-branch Git deposundaki yazar ve işleyen bilgilerini değiştirmek için taahhüt geçmişini yeniden yazar.
export GIT_AUTHOR_NAME Filtre dallanma işleminde yeniden yazılan taahhütlerin yazar adını ayarlar.
export GIT_AUTHOR_EMAIL Filtre dallandırma işleminde yeniden yazılan taahhütler için yazar e-postasını ayarlar.
wget Dosyaları internetten indirir; burada BFG Repo-Cleaner aracını indirmek için kullanılır.
bfg-1.13.0.jar Depo geçmişini temizleme işlemini basitleştiren BFG Repo-Cleaner için Java Arşiv dosyası.
--replace-text Depo geçmişindeki belirli metni (e-posta adreslerini) değiştirmek için BFG Repo-Cleaner komutu.
git reflog expire Yeniden yazılan geçmişe yapılan referansları temizlemek için yararlı olan yeniden günlükteki girişlerin süresini doldurur.
git gc --prune=now Çöp toplama işlemini gerçekleştirir ve geçmişi yeniden yazdıktan sonra kullanılan, erişilemeyen nesneleri anında temizler.
git commit --amend En son taahhüdü yeni yazar bilgileriyle veya taahhüt içeriğindeki değişikliklerle değiştirir.

Kişisel E-postayı Git Taahhütlerinden Kaldırma

Komut dosyaları, bir çekme isteği birleştirildikten sonra kişisel e-posta bilgilerinin Git taahhütlerinden kaldırılmasına yardımcı oldu. İlk komut dosyası şunu kullanır: git filter-branch taahhüt geçmişini yeniden yazmak için. Bu komut, yazarın veya taahhüt edenin e-postasının eski e-postayla eşleşip eşleşmediğini kontrol ederek her taahhütte yinelenir. Böyle bir durumda onu yeni, anonimleştirilmiş e-postayla değiştirir. Taahhüt geçmişini yeniden yazdıktan sonra uzak depoyu güncellemek için bir zorlama gerekir. export GIT_AUTHOR_EMAIL Ve export GIT_COMMITTER_EMAIL yeniden yazılan taahhütlerin doğru e-posta bilgilerine sahip olmasını sağlamak için komutlar burada çok önemlidir.

İkinci senaryonun avantajları BFG Repo-Cleanerfiltre dalına daha basit ve daha hızlı bir alternatiftir. kullanarak --replace-text komutuyla BFG, depo geçmişi boyunca eski e-postanın tüm örneklerini yenisiyle değiştirebilir. Değiştirme sonrasında, komut dosyası bir çöp toplama işlemi gerçekleştirir. git gc --prune=now kalan verileri temizlemek için. Üçüncü komut dosyası, en son taahhüdün değiştirilmesine odaklanır. git commit --amendtüm geçmişi yeniden yazmaya gerek kalmadan yazar bilgilerinde hızlı değişiklik yapılmasına olanak tanır.

Taahhüt Geçmişini Yeniden Yazmak için Git Filtre Şubesini Kullanma

Git ile Shell Komut Dosyasını Kullanma

#!/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/*'

Daha Kolay E-posta Kaldırma için BFG Repo-Cleaner'ı Kullanma

Java'yı BFG Repo-Cleaner ile Kullanmak

# 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

E-posta Değişikliği için Son Taahhüdün Değiştirilmesi

Basit Değişiklik için Git Komut Satırını Kullanma

# 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

Çekme İsteğini Birleştirdikten Sonra Gizliliğin Sağlanması

Git taahhütlerinden kişisel e-postayı kaldırmaya çalışırken göz önünde bulundurulması gereken bir diğer husus, GitHub’s personal email settings. Git istemcinizi GitHub tarafından sağlanan özel bir e-posta adresini kullanacak şekilde yapılandırarak gerçek e-postanızın gelecekteki işlemlerde açığa çıkmasını önleyebilirsiniz. Bu, e-postanızı şu formata ayarlayarak yapılabilir: username@users.noreply.github.com. Ayrıca GitHub'un ayarlarında e-posta gizliliğini etkinleştirmek, özel e-postanızın web tabanlı Git işlemleri için kullanılmasını sağlar.

Halihazırda aktarılan ve birleştirilen taahhütler için GitHub'un bakımcılarının geçmiş taahhüt verilerini değiştirme yetkisi sınırlıdır. Ancak, katkıda bulunanların özel e-posta kullanmasını teşvik eden veya zorunlu kılan veri havuzu politikalarını uygulayarak yardımcı olabilirler. Aşırı durumlarda, hassas verilerin kaldırılmasına yardımcı olabilirler, ancak bu genellikle tüm katkıda bulunanları etkileyebilecek geçmişi yeniden yazmayı içerir.

Git Taahhütlerinde E-posta Gizliliği Hakkında Sıkça Sorulan Sorular

  1. E-postamın gelecekteki taahhütlerde açığa çıkmasını nasıl önleyebilirim?
  2. E-postanızı şu şekilde ayarlayın: username@users.noreply.github.com Git yapılandırmanızda.
  3. Zaten aktarılan taahhütlerin e-postasını değiştirebilir miyim?
  4. Evet, kullanabilirsin git filter-branch veya BFG Repo-Cleaner taahhüt geçmişini yeniden yazmak ve e-postayı değiştirmek için.
  5. Gelecekteki taahhütlerde e-postamı gizlemenin en kolay yolu nedir?
  6. GitHub hesabınızı özel bir e-posta kullanacak şekilde yapılandırın ve Git istemcinizin e-postasını username@users.noreply.github.com.
  7. Bir taahhüdün değiştirilmesi geçmişini değiştirir mi?
  8. Evet, git commit --amend Depoyu güncellemeye zorlanabilecek en son taahhüdü değiştirir.
  9. Depo yöneticileri taahhüt bilgilerimi değiştirebilir mi?
  10. Bakımcıların taahhüt geçmişini değiştirme yeteneği sınırlıdır ancak gelecekteki taahhütler için gizlilik politikalarını uygulayabilirler.
  11. Taahhüt geçmişini yeniden yazmak güvenli midir?
  12. Geçmişin yeniden yazılması işbirliğini etkileyebilir, bu nedenle bu işlemin dikkatli bir şekilde, ideal olarak kontrollü bir ortamda yapılması gerekir.
  13. Zorla yapılan değişikliklerin etkisi nedir?
  14. Zorla zorlama, geçmişi geçersiz kılabilir ve bu da ortak çalışanların kafasını karıştırabilir; bu nedenle, bunu yapmadan önce net bir şekilde iletişim kurun.
  15. E-posta gizliliği tüm kuruluş genelinde uygulanabilir mi?
  16. Evet, GitHub kuruluşları politikalar belirleyebilir ve aşağıdaki gibi araçları kullanabilir: pre-commit hooks e-posta gizliliğini sağlamak için.
  17. Ön işleme kancaları nelerdir?
  18. Ön taahhüt kancaları, bir taahhüt oluşturulmadan önce çalıştırılan ve özel bir e-posta kullanmak gibi belirli kriterleri karşılamasını sağlayan komut dosyalarıdır.

Git Taahhütlerinde E-posta Gizliliği Hakkında Son Düşünceler

Kişisel bilgilerinizi korumak, özellikle halka açık veri havuzlarına katkıda bulunurken çok önemlidir. Git ayarlarınızı özel bir adres kullanacak şekilde yapılandırarak ve aşağıdaki gibi araçları kullanarak git filter-branch Ve BFG Repo-Cleaner, kişisel verileri taahhüt geçmişinden etkili bir şekilde kaldırabilirsiniz. Depo yöneticilerinin taahhüt bilgilerini değiştirme yetkisi sınırlı olsa da gizlilik uygulamalarını destekleyebilirler. Karışıklığı önlemek için her zaman geçmişin yeniden yazıldığını ekibinize ilettiğinizden emin olun. Bu yöntemlerle açık kaynaklı projelere katkıda bulunurken gizliliğinizi koruyabilirsiniz.