π₯ ΠΠ°ΠΊ ΡΠ΄Π°Π»ΠΈΡΡ email ΠΈΠ· git: ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΡΠΎΠ²Π½Π΅ΠΉ
git config --global --unset user.email
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΄Π°Π»ΠΈΡ Π²Π°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ email Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π° Π² Git. Π’Π΅ΠΏΠ΅ΡΡ Git Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ email, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠΈΠΊΡΠΈΡΡΠ΅ΡΠ΅ ΠΈ ΠΎΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
Π£ΠΊΠ°Π·Π°Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΄Π°Π»ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ ΡΠ°Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ email. ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π΅Π³ΠΎ Π΄ΡΡΠ³ΠΈΠΌ email, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ `git config --global user.email "your-email@example.com"`, ΡΠΊΠ°Π·Π°Π² Π½ΠΎΠ²ΡΠΉ email.ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠ΄Π°Π»ΠΈΡΡ email Π² git
Git β ΡΡΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΠΆΠ½ΡΡ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² ΡΠ°Π±ΠΎΡΡ Ρ Git β ΡΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π²Π°ΡΠ΅Π³ΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΈΠ»Ρ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠ΄Π°Π»ΠΈΡΡ Π²Π°Ρ email ΠΈΠ· ΠΈΡΡΠΎΡΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Git.
Π‘ΠΏΠΎΡΠΎΠ± 1: ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°ΠΌΠ΅Π½Π° email
Git ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git filter-branch, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ email Π°Π²ΡΠΎΡΠ° ΠΈ ΠΊΠΎΠΌΠΌΠΈΡΡΠ΅ΡΠ° Π² ΠΈΡΡΠΎΡΠΈΠΈ Git. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΈΠ»ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Git.
- ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π·Π°ΠΌΠ΅Π½ΠΈΠ² "old_email@example.com" Π½Π° Π²Π°Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ email, Π° "new_email@example.com" Π½Π° Π½ΠΎΠ²ΡΠΉ email, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
git filter-branch --env-filter 'if [ "$GIT_AUTHOR_EMAIL" = "old_email@example.com" ]; then export GIT_AUTHOR_EMAIL="new_email@example.com"; fi'
git filter-branch --env-filter 'if [ "$GIT_COMMITTER_EMAIL" = "old_email@example.com" ]; then export GIT_COMMITTER_EMAIL="new_email@example.com"; fi'
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ "old_email@example.com" ΠΈ "new_email@example.com" Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ email.
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ Git ΠΏΡΠΎΠΉΠ΄Π΅Ρ ΠΏΠΎ Π²ΡΠ΅ΠΉ ΠΈΡΡΠΎΡΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Π² Π²Π°ΡΠ΅ΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ email Π½Π° Π½ΠΎΠ²ΡΠΉ.
Π‘ΠΏΠΎΡΠΎΠ± 2: Manual Π·Π°ΠΌΠ΅Π½Π° email Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠ΅
ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ email Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠ΅ Π²ΡΡΡΠ½ΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΈΠ»ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Git.
- ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git log --format="%H", ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Ρ Π΅ΡΠ΅ΠΉ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²:
git log --format="%H"
ΠΡΠΎ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ Ρ Π΅ΡΠ΅ΠΉ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ², Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ.
- ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ° Π²Π²Π΅Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ "commit_hash" ΠΈ "new_email@example.com" ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ:
git filter-branch --commit-filter 'if [ "$GIT_COMMIT" = "commit_hash" ]; then export GIT_AUTHOR_EMAIL="new_email@example.com"; export GIT_COMMITTER_EMAIL="new_email@example.com"; fi' --tag-name-filter cat -- --branches --tags
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠΎΠ²ΡΠΎΡΠΈΡΠ΅ ΡΡΠΎΡ ΡΠ°Π³ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠ°, Π·Π°ΠΌΠ΅Π½ΠΈΠ² "commit_hash" ΠΈ "new_email@example.com".
ΠΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π²ΡΡΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ email Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΌ ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠΎΡΠ»Π΅ Π·Π°ΠΌΠ΅Π½Ρ email
ΠΠΎΡΠ»Π΅ Π·Π°ΠΌΠ΅Π½Ρ email Π² ΠΈΡΡΠΎΡΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Git, Π²Π°ΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΈ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π»ΡΠ΄ΡΠΌΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΡΠΎΡΡΡΠ΄Π½ΠΈΡΠ°Π΅ΡΠ΅. ΠΡΠ»ΠΈ Π²Π°Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΡΠΆΠ΅ Π±ΡΠ» ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΡΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π·Π°Π½ΠΎΠ²ΠΎ ΠΈ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΡΠ²ΠΎΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Git ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ Π·Π° ΠΏΠΎΠΌΠΎΡΡΡ ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΡΡΠ΅ΡΡΠΈΠΌ Π»ΠΈΡΠ°ΠΌ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ email ΠΈΠ· ΠΈΡΡΠΎΡΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² Git. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ Π·Π°ΠΌΠ΅Π½Ρ email Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git filter-branch ΠΈΠ»ΠΈ Π²ΡΡΡΠ½ΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ email Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠ΅. ΠΠΎΡΠ»Π΅ Π·Π°ΠΌΠ΅Π½Ρ email Π² ΠΈΡΡΠΎΡΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ°Π³ΠΈ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈ ΡΠ²ΡΠ·Π΅ΠΉ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π£Π΄Π°ΡΠΈ Π² ΡΠ°Π±ΠΎΡΠ΅ Ρ Git!