Hogyan távolítsuk el a személyes e-maileket a Git Commits szolgáltatásból

Hogyan távolítsuk el a személyes e-maileket a Git Commits szolgáltatásból
Hogyan távolítsuk el a személyes e-maileket a Git Commits szolgáltatásból

E-mail adatainak védelme a GitHubon

Személyes e-mailjei közzététele a GitHub commitokban adatvédelmi aggályokat jelenthet, különösen, ha nyilvános adattárakon dolgozik. Ha megnyitott egy lehívási kérelmet (PR), amelyet egyesítettek, és észrevette, hogy személyes e-mailje látható, fontos, hogy tegyen lépéseket annak elrejtésére.

Ebben az útmutatóban különféle módszereket fogunk megvizsgálni, amelyek segítségével eltávolíthatja vagy kitakarhatja e-mail-címét a nyilvánosság elől, miután egy PR-t egyesítettek. Azt is megvitatjuk, hogy a fenntartók képesek-e megváltoztatni a kötelezettségvállalási információkat, és hogyan módosíthatják hatékonyan a kötelezettségvállalásokat.

Parancs Leírás
git filter-branch Átírja a véglegesítési előzményeket, hogy módosítsa a szerzőt és a véglegesítési információkat a Git-lerakatban.
export GIT_AUTHOR_NAME Beállítja a szerző nevét a szűrő-elágazás műveletben átírandó commitokhoz.
export GIT_AUTHOR_EMAIL Beállítja a szerzői e-mail-címet a szűrő-elágazás műveletben átírandó véglegesítésekhez.
wget Fájlokat tölt le az internetről, és itt töltheti le a BFG Repo-Cleaner eszközt.
bfg-1.13.0.jar Java archív fájl a BFG Repo-Cleanerhez, amely leegyszerűsíti a lerakatelőzmények tisztításának folyamatát.
--replace-text A BFG Repo-Cleaner parancs bizonyos szövegek (e-mail címek) cseréjéhez a lerakatelőzményekben.
git reflog expire Lejár a bejegyzések a reflogban, ami hasznos az átírt történelemre való hivatkozások tisztításához.
git gc --prune=now Szemetgyűjtést hajt végre, és azonnal levágja az elérhetetlen objektumokat, amelyeket az előzmények átírása után használnak fel.
git commit --amend Módosítja a legutóbbi véglegesítést új szerzői adatokkal vagy a véglegesítés tartalmának módosításával.

Személyes e-mailek eltávolítása a Git Commits szolgáltatásból

A szkriptek segítséget nyújtottak a személyes e-mail-adatok eltávolításában a Git-commits-ból, miután egy lekérési kérelmet egyesítettek. Az első szkript használ git filter-branch átírni az elkövetési történelmet. Ez a parancs ismétlődik minden véglegesítésen, és ellenőrzi, hogy a szerző vagy a megbízó e-mail-címe megegyezik-e a régi e-mail-címmel. Ha igen, akkor lecseréli az új, névtelen e-mailre. A véglegesítési előzmények átírása után kényszernyomásra van szükség a távoli tároló frissítéséhez. A export GIT_AUTHOR_EMAIL és export GIT_COMMITTER_EMAIL A parancsok itt kulcsfontosságúak annak biztosításához, hogy az újraírt véglegesítések megfelelő e-mail-információkkal rendelkezzenek.

A második szkript kihasználja BFG Repo-Cleaner, ami a filter-elágazás egyszerűbb és gyorsabb alternatívája. Használatával a --replace-text paranccsal, a BFG lecserélheti a régi e-mail összes példányát az újra a lerakatelőzmények során. A csere után a szkript szemétgyűjtést hajt végre git gc --prune=now hogy törölje a maradék adatokat. A harmadik szkript a legutóbbi véglegesítés módosítására összpontosít git commit --amend, amely lehetővé teszi a szerző információinak gyors megváltoztatását a teljes előzmény átírása nélkül.

A Git Filter-Branch használata a véglegesítési előzmények újraírására

Shell Scripting használata Git-tel

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

A BFG Repo-Cleaner használata az e-mailek egyszerűbb eltávolításához

Java használata a BFG Repo-Cleanerrel

# 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

Az e-mail módosítás utolsó kötelezettségének módosítása

A Git parancssor használata az egyszerű módosításhoz

# 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

Adatvédelem biztosítása a lehívási kérelem egyesítése után

Egy másik szempont, amelyet figyelembe kell venni, amikor megpróbálja eltávolítani a személyes e-maileket a Git commits-ból, a használata GitHub’s personal email settings. Ha beállítja Git-kliensét a GitHub által biztosított privát e-mail-cím használatára, elkerülheti, hogy valódi e-mailjei megjelenjenek a jövőbeni véglegesítés során. Ezt megteheti az e-mail formátum beállításával username@users.noreply.github.com. Ezenkívül az e-mailek adatvédelmének engedélyezése a GitHub beállításaiban biztosítja, hogy privát e-mailjeit webalapú Git-műveletekhez használják fel.

A már eltolt és összevont véglegesítések esetében a GitHub karbantartói korlátozottan képesek módosítani a korábbi véglegesítési adatokat. Segíthetnek azonban olyan adattárházirendek betartatásával, amelyek arra ösztönzik vagy megkövetelik a közreműködőket, hogy privát e-maileket használjanak. Szélsőséges esetekben segíthetnek érzékeny adatok eltávolításában, de ez általában az előzmények átírásával jár, ami minden közreműködőt érinthet.

Gyakran ismételt kérdések az e-mailek adatvédelméről a Git Commits szolgáltatásban

  1. Hogyan akadályozhatom meg, hogy e-mailjeim nyilvánosságra kerüljenek a jövőbeni kötelezettségvállalások során?
  2. Állítsa be az e-mail címét username@users.noreply.github.com a Git konfigurációjában.
  3. Módosíthatom az e-mail-címet a már elküldött commitokhoz?
  4. Igen, használhatod git filter-branch vagy BFG Repo-Cleaner a véglegesítési előzmények átírásához és az e-mail módosításához.
  5. Mi a legegyszerűbb módja annak, hogy elrejtsem az e-mail címemet a jövőbeni véglegesítések során?
  6. Konfigurálja GitHub-fiókját privát e-mail használatára, és állítsa be a Git-kliens e-mail-címét erre username@users.noreply.github.com.
  7. Megváltoztatja-e egy kötelezettségvállalás módosítása annak történetét?
  8. Igen, git commit --amend megváltoztatja a legutóbbi véglegesítést, amely kényszerített lenyomásával frissíthető a tárhelyen.
  9. Módosíthatják a lerakatkarbantartók a véglegesítési adataimat?
  10. A fenntartók korlátozottan módosíthatják a kötelezettségvállalási előzményeket, de érvényesíthetik az adatvédelmi szabályzatot a jövőbeli commiting során.
  11. Biztonságos-e átírni a kötelezettségvállalási előzményeket?
  12. Az előzmények újraírása hatással lehet az együttműködésre, ezért óvatosan kell végezni, ideális esetben ellenőrzött környezetben.
  13. Milyen hatással vannak az erőltetett változtatások?
  14. A kényszernyomás felülírhatja az előzményeket, ami megzavarhatja az együttműködőket, ezért kommunikáljon világosan, mielőtt ezt megtenné.
  15. Az e-mailek adatvédelme érvényesíthető az egész szervezeten?
  16. Igen, a GitHub-szervezetek beállíthatnak házirendeket és használhatnak olyan eszközöket, mint pl pre-commit hooks az e-mailek adatvédelmének biztosítása érdekében.
  17. Mik azok a pre-commit horgok?
  18. A véglegesítés előtti hoook olyan szkriptek, amelyek a véglegesítés létrehozása előtt futnak le, biztosítva, hogy megfeleljen bizonyos feltételeknek, például privát e-mail használata.

Utolsó gondolatok a Git Commits e-mail adatvédelméről

Személyes adatainak védelme elengedhetetlen, különösen a nyilvános adattárakba való hozzájáruláskor. Úgy konfigurálja a Git beállításait, hogy privát címet használjon, és olyan eszközöket használ, mint pl git filter-branch és BFG Repo-Cleaner, hatékonyan eltávolíthatja a személyes adatokat az elkövetési előzményekből. Míg az adattár-karbantartóknak korlátozott hatalmuk van a véglegesítési adatok megváltoztatására, támogathatják az adatvédelmi gyakorlatokat. A félreértések elkerülése érdekében mindig közölje csapatával az előzmények átírását. Ezekkel a módszerekkel megőrizheti magánéletét, miközben hozzájárul a nyílt forráskódú projektekhez.