Cara Menghapus Email Pribadi dari Git Commits

Cara Menghapus Email Pribadi dari Git Commits
Cara Menghapus Email Pribadi dari Git Commits

Melindungi Privasi Email Anda di GitHub

Mengekspos email pribadi Anda di GitHub dapat menjadi masalah privasi, terutama saat bekerja pada repositori publik. Jika Anda telah membuka permintaan tarik (PR) yang telah digabungkan dan melihat email pribadi Anda terlihat, penting untuk mengambil langkah untuk menyembunyikannya.

Dalam panduan ini, kami akan mengeksplorasi berbagai metode untuk menghapus atau mengaburkan alamat email Anda dari tampilan publik setelah PR digabungkan. Kami juga akan membahas apakah pengelola memiliki kemampuan untuk mengubah informasi penerapan dan cara mengubah komitmen Anda secara efektif.

Memerintah Keterangan
git filter-branch Menulis ulang riwayat komit untuk mengubah informasi pembuat dan pengimplementasi di repositori Git.
export GIT_AUTHOR_NAME Menetapkan nama penulis untuk komit yang ditulis ulang dalam operasi cabang filter.
export GIT_AUTHOR_EMAIL Menyetel email penulis untuk komit yang ditulis ulang dalam operasi cabang filter.
wget Mengunduh file dari internet, digunakan di sini untuk mengunduh alat BFG Repo-Cleaner.
bfg-1.13.0.jar File Arsip Java untuk BFG Repo-Cleaner, yang menyederhanakan proses pembersihan riwayat repositori.
--replace-text Perintah BFG Repo-Cleaner untuk mengganti teks tertentu (alamat email) dalam riwayat repositori.
git reflog expire Kedaluwarsa entri di reflog, yang berguna untuk membersihkan referensi ke riwayat yang ditulis ulang.
git gc --prune=now Melakukan pengumpulan sampah dan segera memangkas objek yang tidak dapat dijangkau, digunakan setelah menulis ulang riwayat.
git commit --amend Mengubah komit terbaru dengan informasi penulis baru atau perubahan pada konten komit.

Menghapus Email Pribadi dari Git Commits

Skrip ini memberikan bantuan dalam menghapus informasi email pribadi dari komitmen Git setelah permintaan penarikan digabungkan. Skrip pertama menggunakan git filter-branch untuk menulis ulang riwayat komit. Perintah ini mengulangi setiap komit, memeriksa apakah email penulis atau pelaku cocok dengan email lama. Jika ya, ia akan menggantinya dengan email baru yang dianonimkan. Setelah menulis ulang riwayat komit, dorongan paksa diperlukan untuk memperbarui repositori jarak jauh. Itu export GIT_AUTHOR_EMAIL Dan export GIT_COMMITTER_EMAIL perintah sangat penting di sini untuk memastikan komit yang ditulis ulang memiliki informasi email yang benar.

Skrip kedua memanfaatkan BFG Repo-Cleaner, yang merupakan alternatif yang lebih sederhana dan lebih cepat untuk filter-branch. Dengan menggunakan --replace-text perintah, BFG dapat mengganti semua contoh email lama dengan yang baru sepanjang riwayat repositori. Pasca penggantian, skrip melakukan pengumpulan sampah dengan git gc --prune=now untuk membersihkan sisa data. Skrip ketiga berfokus pada perubahan penggunaan komit terbaru git commit --amend, yang memungkinkan perubahan cepat pada informasi penulis tanpa menulis ulang seluruh riwayat.

Menggunakan Git Filter-Branch untuk Menulis Ulang Riwayat Komit

Menggunakan Skrip Shell dengan 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/*'

Menggunakan BFG Repo-Cleaner untuk Penghapusan Email Lebih Mudah

Memanfaatkan Java dengan 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

Mengubah Komitmen Terakhir untuk Perubahan Email

Menggunakan Baris Perintah Git untuk Perubahan Sederhana

# 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

Memastikan Privasi Setelah Menggabungkan Permintaan Tarik

Aspek lain yang perlu dipertimbangkan ketika mencoba menghapus email pribadi dari komitmen Git adalah penggunaan GitHub’s personal email settings. Dengan mengonfigurasi klien Git Anda untuk menggunakan alamat email pribadi yang disediakan oleh GitHub, Anda dapat menghindari pengungkapan email asli Anda di komitmen mendatang. Hal ini dapat dilakukan dengan mengatur email Anda ke format username@users.noreply.github.com. Selain itu, mengaktifkan privasi email di pengaturan GitHub memastikan bahwa email pribadi Anda digunakan untuk operasi Git berbasis web.

Untuk komitmen yang telah didorong dan digabungkan, pengelola GitHub memiliki kekuatan terbatas untuk mengubah data historis komitmen. Namun, mereka dapat membantu dengan menerapkan kebijakan repositori yang mendorong atau mengharuskan kontributor untuk menggunakan email pribadi. Dalam kasus ekstrem, mereka mungkin membantu menghapus data sensitif, namun hal ini biasanya melibatkan penulisan ulang riwayat, yang dapat memengaruhi semua kontributor.

Pertanyaan Umum Tentang Privasi Email di Git Commits

  1. Bagaimana cara mencegah email saya terekspos di masa mendatang?
  2. Setel email Anda ke username@users.noreply.github.com dalam konfigurasi Git Anda.
  3. Bisakah saya mengubah email untuk komitmen yang sudah didorong?
  4. Ya, Anda bisa menggunakannya git filter-branch atau BFG Repo-Cleaner untuk menulis ulang riwayat komit dan mengubah email.
  5. Apa cara termudah untuk menyembunyikan email saya di masa mendatang?
  6. Konfigurasikan akun GitHub Anda untuk menggunakan email pribadi, dan atur email klien Git Anda ke username@users.noreply.github.com.
  7. Apakah mengubah komit mengubah riwayatnya?
  8. Ya, git commit --amend mengubah komit terbaru, yang dapat didorong secara paksa untuk memperbarui repositori.
  9. Bisakah pengelola repositori mengubah informasi penerapan saya?
  10. Pengelola memiliki kemampuan terbatas untuk mengubah riwayat penerapan, namun dapat menerapkan kebijakan privasi untuk penerapan di masa mendatang.
  11. Apakah aman untuk menulis ulang riwayat komit?
  12. Menulis ulang sejarah dapat mempengaruhi kolaborasi, sehingga harus dilakukan dengan hati-hati, idealnya dalam lingkungan yang terkendali.
  13. Apa dampak dari perubahan yang dipaksakan?
  14. Pemaksaan dapat menimpa riwayat, yang mungkin membingungkan kolaborator, jadi komunikasikan dengan jelas sebelum melakukannya.
  15. Bisakah privasi email diterapkan di seluruh organisasi?
  16. Ya, organisasi GitHub dapat menetapkan kebijakan dan menggunakan alat seperti itu pre-commit hooks untuk memastikan privasi email.
  17. Apa itu hook pra-komitmen?
  18. Kait pra-komit adalah skrip yang dijalankan sebelum komit dibuat, memastikan komit memenuhi kriteria tertentu seperti menggunakan email pribadi.

Pemikiran Terakhir tentang Privasi Email di Git Commits

Melindungi informasi pribadi Anda sangatlah penting, terutama ketika berkontribusi pada repositori publik. Dengan mengonfigurasi pengaturan Git Anda untuk menggunakan alamat pribadi dan memanfaatkan alat-alat seperti git filter-branch Dan BFG Repo-Cleaner, Anda dapat secara efektif menghapus data pribadi dari riwayat penerapan. Meskipun pengelola repositori memiliki kekuasaan terbatas untuk mengubah informasi penerapan, mereka dapat mendukung praktik privasi. Selalu pastikan untuk mengomunikasikan penulisan ulang riwayat apa pun dengan tim Anda untuk menghindari kebingungan. Dengan metode ini, Anda dapat menjaga privasi sambil berkontribusi pada proyek sumber terbuka.