{"id":35804,"date":"2025-12-04T01:31:03","date_gmt":"2025-12-03T22:31:03","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/"},"modified":"2025-12-04T01:31:03","modified_gmt":"2025-12-03T22:31:03","slug":"set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/","title":{"rendered":"Set-and-Forget Git Privacy in 5 Minutes: Auto-Switch No-Reply Emails for GitHub\/GitLab"},"content":{"rendered":"<p>Ki\u015fisel Git projelerinizde \u00f6zel e-postan\u0131z\u0131, i\u015f projelerinizde ise kurumsal veya GitHub\/GitLab taraf\u0131ndan sa\u011flanan no-reply adresinizi kar\u0131\u015ft\u0131rmaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Bu durum sadece gizlilik ihlallerine yol a\u00e7makla kalmaz, ayn\u0131 zamanda profesyonel itibar\u0131n\u0131z\u0131 da zedeleyebilir. Endi\u015felenmeyin! Bu makale, Git yap\u0131land\u0131rman\u0131z\u0131 otomatikle\u015ftirerek bu sorunu 5 dakikada kal\u0131c\u0131 olarak \u00e7\u00f6zmenizi sa\u011flayacak, ak\u0131ll\u0131 bir otomasyon rehberi sunuyor. Art\u0131k her projeye \u00f6zel e-posta adresinizi manuel olarak de\u011fi\u015ftirmek zorunda kalmayacaks\u0131n\u0131z, Git sizin i\u00e7in bu hassas ge\u00e7i\u015fi otomatik olarak y\u00f6netecek.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda, geli\u015ftiriciler olarak birden fazla \u015fapka giymek yayg\u0131n bir durum. Bir yandan ki\u015fisel projelerimizle hobilerimize y\u00f6n verirken, di\u011fer yandan profesyonel kariyerimizde kurumsal projelere katk\u0131da bulunuyoruz. Bu iki d\u00fcnyan\u0131n kesi\u015fim noktas\u0131 genellikle Git commit&#8217;lerimizde kulland\u0131\u011f\u0131m\u0131z e-posta adresleri oluyor. Bir\u00e7o\u011fumuz fark\u0131nda olmadan, ki\u015fisel GitHub hesab\u0131m\u0131zla yapt\u0131\u011f\u0131m\u0131z bir commit&#8217;i yanl\u0131\u015fl\u0131kla \u015firket projesine, ya da tam tersini, kurumsal e-posta adresimizle att\u0131\u011f\u0131m\u0131z bir commit&#8217;i ki\u015fisel bir a\u00e7\u0131k kaynak projesine yollayabiliyoruz. Bu k\u00fc\u00e7\u00fck hata, tahmin edebilece\u011finizden \u00e7ok daha b\u00fcy\u00fck gizlilik ve g\u00fcvenlik riskleri ta\u015f\u0131yabilir.<\/p>\n<p>Peki, yanl\u0131\u015f e-posta adresiyle yap\u0131lan bir commit ne gibi sorunlara yol a\u00e7ar? \u00d6ncelikle, ki\u015fisel e-postan\u0131z\u0131n herkese a\u00e7\u0131k bir projede if\u015fa olmas\u0131, spam e-postalara davetiye \u00e7\u0131karabilir veya istenmeyen takiplere maruz kalman\u0131za neden olabilir. Kimse gelen kutusunu gereksiz reklamlarla dolu g\u00f6rmek istemez, de\u011fil mi? \u0130kinci olarak, kurumsal e-posta adresinizin ki\u015fisel bir projede g\u00f6r\u00fcnmesi, \u015firketinizin fikri m\u00fclkiyet haklar\u0131 veya gizlilik politikalar\u0131 a\u00e7\u0131s\u0131ndan sorunlara yol a\u00e7abilir. Baz\u0131 \u015firketler, \u00e7al\u0131\u015fanlar\u0131n\u0131n kurumsal e-postalar\u0131n\u0131 ki\u015fisel projelerde kullanmas\u0131n\u0131 kesinlikle yasaklar ve bu durum i\u015f s\u00f6zle\u015fmenizin ihlali anlam\u0131na gelebilir. Hatta, bu t\u00fcr bir durum yanl\u0131\u015f anla\u015f\u0131lmalara yol a\u00e7arak \u015firketinizin itibar\u0131n\u0131 zedeleyebilir veya projelerinize y\u00f6nelik g\u00fcvenlik a\u00e7\u0131\u011f\u0131 iddialar\u0131na neden olabilir.<\/p>\n<p>Bu gibi sorunlar\u0131 \u00f6nlemenin en temel yollar\u0131ndan biri, Git&#8217;in sundu\u011fu global ve yerel yap\u0131land\u0131rma \u00f6zelliklerini do\u011fru bir \u015fekilde kullanmakt\u0131r. Git, bir e-posta adresini genel (global) olarak ayarlaman\u0131za olanak tan\u0131r ki bu, her yeni projenizde varsay\u0131lan olarak kullan\u0131lacak adrestir. Ancak as\u0131l \u00e7\u00f6z\u00fcm, her projeye \u00f6zel (yerel) bir e-posta adresi atayabilmektir. Bu sayede, i\u015f projenizde kurumsal e-postan\u0131z\u0131 veya GitHub\/GitLab&#8217;\u0131n sundu\u011fu &#8220;no-reply&#8221; adresini kullan\u0131rken, ki\u015fisel projenizde farkl\u0131 bir e-posta adresiyle rahat\u00e7a \u00e7al\u0131\u015fabilirsiniz. GitHub ve GitLab gibi platformlar, kullan\u0131c\u0131 gizlili\u011fini korumak ad\u0131na \u00f6zel &#8220;no-reply&#8221; e-posta adresleri sunar. Bu adresler, ger\u00e7ek e-posta adresinizi commit ge\u00e7mi\u015finizden gizler ve kimli\u011finizi koruman\u0131za yard\u0131mc\u0131 olur. Bu sayede, hem profesyonel duru\u015funuzu korur hem de ki\u015fisel verilerinizin g\u00fcvenli\u011fini sa\u011flars\u0131n\u0131z. Git&#8217;in bu esnek yap\u0131land\u0131rma yetene\u011fi, geli\u015ftiricilere b\u00fcy\u00fck bir \u00f6zg\u00fcrl\u00fck sunar; ancak bu esnekli\u011fi manuel olarak y\u00f6netmek zamanla yorucu bir hal alabilir. \u0130\u015fte bu y\u00fczden, bu makalede sunaca\u011f\u0131m\u0131z otomatik \u00e7\u00f6z\u00fcm, bu manuel y\u00fck\u00fc \u00fczerinizden alarak hayat\u0131n\u0131z\u0131 kolayla\u015ft\u0131racak.<\/p>\n<h2>GitHub ve GitLab&#8217;da No-Reply E-posta Adresi Nas\u0131l Bulunur ve Yap\u0131land\u0131r\u0131l\u0131r?<\/h2>\n<p>Git commit&#8217;lerinizin gizlili\u011fini sa\u011flaman\u0131n ilk ad\u0131m\u0131, kulland\u0131\u011f\u0131n\u0131z platformun (GitHub veya GitLab) size \u00f6zel olarak atad\u0131\u011f\u0131 &#8220;no-reply&#8221; e-posta adresini bulmak ve Git yap\u0131land\u0131rman\u0131zda kullanmakt\u0131r. Bu adresler, ger\u00e7ek e-posta adresinizi a\u00e7\u0131\u011fa \u00e7\u0131karmadan commit&#8217;lerinizi hesab\u0131n\u0131zla ili\u015fkilendirmenizi sa\u011flar. Hadi bu s\u00fcre\u00e7leri ad\u0131m ad\u0131m inceleyelim.<\/p>\n<h3>GitHub No-Reply E-postan\u0131z\u0131 Ke\u015ffetmek: Ad\u0131m Ad\u0131m Rehber<\/h3>\n<p>GitHub, kullan\u0131c\u0131lar\u0131n e-posta adreslerini herkese a\u00e7\u0131k commit ge\u00e7mi\u015finden gizlemesini \u00e7ok basit bir \u015fekilde sa\u011flar. Bu \u00f6zellik sayesinde, GitHub profilinizle ili\u015fkili t\u00fcm commit&#8217;ler, ger\u00e7ek e-posta adresiniz yerine \u00f6zel bir &#8220;no-reply&#8221; adresiyle g\u00f6sterilir. \u0130\u015fte bu adresi bulman\u0131n ve ayarlaman\u0131n yolu:<\/p>\n<ol>\n<li>\u00d6ncelikle GitHub hesab\u0131n\u0131za giri\u015f yap\u0131n.<\/li>\n<li>Sa\u011f \u00fcst k\u00f6\u015fedeki profil foto\u011fraf\u0131n\u0131za t\u0131klay\u0131n ve a\u00e7\u0131lan men\u00fcden &#8220;Settings&#8221; (Ayarlar) se\u00e7ene\u011fini se\u00e7in.<\/li>\n<li>Sol men\u00fcde bulunan &#8220;Emails&#8221; (E-postalar) sekmesine t\u0131klay\u0131n.<\/li>\n<li>Bu sayfada, kay\u0131tl\u0131 e-posta adreslerinizin bir listesini g\u00f6receksiniz. Genellikle &#8220;Keep my email addresses private&#8221; (E-posta adreslerimi gizli tut) se\u00e7ene\u011finin hemen alt\u0131nda, sizin i\u00e7in olu\u015fturulmu\u015f \u00f6zel &#8220;no-reply&#8221; e-posta adresini bulacaks\u0131n\u0131z. Bu adres genellikle <code>[ID+username]@users.noreply.github.com<\/code> format\u0131ndad\u0131r. \u00d6rne\u011fin: <code>12345678+kullaniciadim@users.noreply.github.com<\/code>.<\/li>\n<li>Bu adresi kopyalay\u0131n.<\/li>\n<li>\u015eimdi, bu adresi Git global yap\u0131land\u0131rman\u0131za ekleyerek varsay\u0131lan olarak kullanmas\u0131n\u0131 sa\u011flayabiliriz. Terminalinizi a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n, kopyalad\u0131\u011f\u0131n\u0131z no-reply adresiyle de\u011fi\u015ftirerek:\n<pre><code>\ngit config --global user.email \"12345678+kullaniciadim@users.noreply.github.com\"\n<\/pre>\n<p><\/code>\n    <\/li>\n<li>Ayr\u0131ca, commit'lerinizde g\u00f6r\u00fcnen ad\u0131n\u0131z\u0131 da ayarlaman\u0131z \u00f6nemlidir. Bu genellikle GitHub kullan\u0131c\u0131 ad\u0131n\u0131z olabilir veya tercih etti\u011finiz ba\u015fka bir isim:\n<pre><code>\ngit config --global user.name \"Kullan\u0131c\u0131 Ad\u0131n\u0131z\"\n<\/pre>\n<p><\/code>\n    <\/li>\n<\/ol>\n<p>Bu ad\u0131mlar\u0131 tamamlad\u0131ktan sonra, yeni yapaca\u011f\u0131n\u0131z t\u00fcm commit'ler (yerel olarak override etmedi\u011finiz s\u00fcrece) bu no-reply e-posta adresiyle ili\u015fkilendirilecektir. Unutmay\u0131n, \"Keep my email addresses private\" kutucu\u011funun i\u015faretli oldu\u011fundan emin olun, aksi takdirde ger\u00e7ek e-postan\u0131z yine de a\u00e7\u0131\u011fa \u00e7\u0131kabilir.<\/p>\n<h3>GitLab No-Reply E-postan\u0131z\u0131 Bulmak: Kolay Y\u00f6ntemler<\/h3>\n<p>GitLab da benzer bir gizlilik \u00f6zelli\u011fi sunar. GitHub'dakine benzer \u015fekilde, GitLab da size \u00f6zel bir \"no-reply\" e-posta adresi sa\u011flar. \u0130\u015fte bu adresi bulma ve ayarlama s\u00fcreci:<\/p>\n<ol>\n<li>GitLab hesab\u0131n\u0131za giri\u015f yap\u0131n.<\/li>\n<li>Sa\u011f \u00fcst k\u00f6\u015fedeki profil foto\u011fraf\u0131n\u0131za t\u0131klay\u0131n ve a\u00e7\u0131lan men\u00fcden \"Preferences\" (Tercihler) se\u00e7ene\u011fini se\u00e7in.<\/li>\n<li>Sol men\u00fcde \"Emails\" (E-postalar) sekmesine t\u0131klay\u0131n.<\/li>\n<li>Bu sayfada, \"Private commit email\" (Gizli commit e-postas\u0131) ba\u015fl\u0131\u011f\u0131 alt\u0131nda size \u00f6zel olarak olu\u015fturulmu\u015f no-reply e-posta adresini g\u00f6receksiniz. Bu adres genellikle <code>[ID-username]@users.noreply.gitlab.com<\/code> format\u0131ndad\u0131r. \u00d6rne\u011fin: <code>123456-kullaniciadim@users.noreply.gitlab.com<\/code>.<\/li>\n<li>Bu adresi kopyalay\u0131n.<\/li>\n<li>\u015eimdi, t\u0131pk\u0131 GitHub'da oldu\u011fu gibi, bu adresi Git global yap\u0131land\u0131rman\u0131za ekleyin. Terminalinizi a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:\n<pre><code>\ngit config --global user.email \"123456-kullaniciadim@users.noreply.gitlab.com\"\ngit config --global user.name \"Kullan\u0131c\u0131 Ad\u0131n\u0131z\"\n<\/pre>\n<p><\/code>\n    <\/li>\n<\/ol>\n<p>GitLab'da ayr\u0131ca \"Set a public email\" (Herkese a\u00e7\u0131k bir e-posta ayarla) se\u00e7ene\u011fi de bulunur. E\u011fer gizlili\u011fi tercih ediyorsan\u0131z, bu se\u00e7ene\u011fin alt\u0131ndaki \"Use a private email\" (Gizli bir e-posta kullan) se\u00e7ene\u011fini se\u00e7ti\u011finizden emin olun.<\/p>\n<h3>Git Global Konfig\u00fcrasyonunuzu Ayarlamak: Tek Seferlik \u00c7\u00f6z\u00fcm<\/h3>\n<p>Yukar\u0131daki ad\u0131mlarla belirledi\u011fimiz <code>user.email<\/code> ve <code>user.name<\/code> de\u011ferleri, Git'in global yap\u0131land\u0131rma dosyas\u0131na (genellikle <code>~\/.gitconfig<\/code>) kaydedilir. Bu, t\u00fcm Git projeleriniz i\u00e7in varsay\u0131lan olarak bu bilgilerin kullan\u0131laca\u011f\u0131 anlam\u0131na gelir. Yani, her yeni Git deposunu klonlad\u0131\u011f\u0131n\u0131zda veya ba\u015flatt\u0131\u011f\u0131n\u0131zda, Git bu global ayarlar\u0131 otomatik olarak uygulayacakt\u0131r. Bu, tek bir kimlikle \u00e7al\u0131\u015fan geli\u015ftiriciler i\u00e7in harika bir \"ayarla ve unut\" \u00e7\u00f6z\u00fcm\u00fcd\u00fcr.<\/p>\n<pre><code>\n# Global yap\u0131land\u0131rman\u0131z\u0131 kontrol etmek i\u00e7in:\ngit config --global --list\n<\/pre>\n<p><\/code><\/p>\n<p>Ancak, birden fazla kimlikle (\u00f6rne\u011fin, hem ki\u015fisel hem de profesyonel) \u00e7al\u0131\u015fan geli\u015ftiriciler i\u00e7in bu global ayar yeterli olmayabilir. \u0130\u015fte bu noktada, proje baz\u0131nda yap\u0131land\u0131rma ve otomatik ge\u00e7i\u015f mekanizmalar\u0131na ihtiya\u00e7 duyulur. Bir sonraki b\u00f6l\u00fcmde, bu otomatik ge\u00e7i\u015fi nas\u0131l sa\u011flayaca\u011f\u0131m\u0131z\u0131 detayl\u0131 bir \u015fekilde ele alaca\u011f\u0131z.<\/p>\n<h2>\u00c7oklu Git Kimlikleri Aras\u0131nda Otomatik Ge\u00e7i\u015f Nas\u0131l Yap\u0131l\u0131r? Ak\u0131ll\u0131 Bir Shell Script \u00c7\u00f6z\u00fcm\u00fc<\/h2>\n<p>Birden fazla Git kimli\u011fiyle \u00e7al\u0131\u015fmak, \u00f6zellikle serbest \u00e7al\u0131\u015fanlar veya hem ki\u015fisel hem de kurumsal projelere katk\u0131da bulunan geli\u015ftiriciler i\u00e7in yayg\u0131n bir durumdur. Her projeye ba\u015flad\u0131\u011f\u0131n\u0131zda <code>git config --local user.email \"...\"<\/code> komutunu manuel olarak \u00e7al\u0131\u015ft\u0131rmak zamanla can s\u0131k\u0131c\u0131 hale gelebilir ve hata yapma olas\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r. Neyse ki, bu s\u00fcreci otomatikle\u015ftirmenin ve \"ayarla ve unut\" bir deneyim yaratman\u0131n ak\u0131ll\u0131 yollar\u0131 var: Shell script'leri ve Git hooks!<\/p>\n<h3>Temel Fikir: Proje Baz\u0131nda Git Yap\u0131land\u0131rmas\u0131n\u0131 Otomatikle\u015ftirmek<\/h3>\n<p>Git'in g\u00fcc\u00fc, yap\u0131land\u0131rmay\u0131 farkl\u0131 seviyelerde y\u00f6netebilme yetene\u011finden gelir. <code>--global<\/code> bayra\u011f\u0131 ile yapt\u0131\u011f\u0131n\u0131z ayarlar t\u00fcm sistem genelinde ge\u00e7erli olurken, <code>--local<\/code> bayra\u011f\u0131 ile yapt\u0131\u011f\u0131n\u0131z ayarlar sadece o anki Git deposu i\u00e7in ge\u00e7erlidir. Bu yerel ayarlar, projenizin <code>.git\/config<\/code> dosyas\u0131nda saklan\u0131r ve global ayarlar\u0131 ge\u00e7ersiz k\u0131lar. Bizim hedefimiz, belirli bir projenin klas\u00f6r\u00fcne girdi\u011fimizde veya bir projeyi klonlad\u0131\u011f\u0131m\u0131zda, bu yerel ayarlar\u0131n otomatik olarak do\u011fru de\u011ferlere ayarlanmas\u0131n\u0131 sa\u011flamakt\u0131r.<\/p>\n<pre><code>\n# Mevcut deponuzun yerel yap\u0131land\u0131rmas\u0131n\u0131 g\u00f6rmek i\u00e7in:\ngit config --local --list\n<\/pre>\n<p><\/code><\/p>\n<p>Bu komut, projenizin k\u00f6k dizinindeki <code>.git\/config<\/code> dosyas\u0131n\u0131n i\u00e7eri\u011fini size g\u00f6sterir. Otomasyonumuzu bu dosyay\u0131 dinamik olarak g\u00fcncellemek \u00fczerine kuraca\u011f\u0131z.<\/p>\n<h3>Shell Script ile Otomatik E-posta Ge\u00e7i\u015fi: Ad\u0131m Ad\u0131m Kurulum<\/h3>\n<p>\u015eimdi, projeler aras\u0131nda otomatik ge\u00e7i\u015f yapacak bir shell script olu\u015ftural\u0131m. Bu script, belirli bir dizine girdi\u011finizde veya bir proje \u00fczerinde \u00e7al\u0131\u015fmaya ba\u015flad\u0131\u011f\u0131n\u0131zda do\u011fru Git kimli\u011fini ayarlayacak. Bu \u00f6rne\u011fi Bash i\u00e7in haz\u0131rl\u0131yorum, ancak benzer mant\u0131\u011f\u0131 farkl\u0131 shell'lerde de uygulayabilirsiniz.<\/p>\n<p>\u00d6ncelikle, ev dizininizde (\u00f6rne\u011fin <code>~\/.git_profile_switcher.sh<\/code>) bir script dosyas\u0131 olu\u015fturun:<\/p>\n<pre><code>\ntouch ~\/.git_profile_switcher.sh\nchmod +x ~\/.git_profile_switcher.sh\n<\/pre>\n<p><\/code><\/p>\n<p>\u015eimdi bu dosyay\u0131 bir metin d\u00fczenleyiciyle a\u00e7\u0131n ve a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin. Bu \u00f6rnekte, <code>~\/repos\/work\/<\/code> dizini alt\u0131ndaki t\u00fcm projeler i\u00e7in kurumsal e-posta adresini, di\u011fer t\u00fcm projeler i\u00e7in ise ki\u015fisel no-reply e-posta adresini kullanaca\u011f\u0131z.<\/p>\n<pre><code>\n#!\/bin\/bash\n\n# Ki\u015fisel no-reply e-posta ve ad\u0131\nPERSONAL_EMAIL=\"12345678+kisisel_kullanici@users.noreply.github.com\"\nPERSONAL_NAME=\"Ki\u015fisel Kullan\u0131c\u0131 Ad\u0131n\u0131z\"\n\n# Kurumsal e-posta ve ad\u0131\nWORK_EMAIL=\"kurumsal.eposta@sirketim.com\"\nWORK_NAME=\"Kurumsal Kullan\u0131c\u0131 Ad\u0131n\u0131z\"\n\n# Ge\u00e7erli projenin dizinini al\nCURRENT_DIR=$(pwd)\n\n# Git deposu olup olmad\u0131\u011f\u0131n\u0131 kontrol et\nif git rev-parse --is-inside-work-tree &>\/dev\/null; then\n    # \u00c7al\u0131\u015fma dizininin ana dizinini bul\n    GIT_ROOT=$(git rev-parse --show-toplevel)\n\n    # E\u011fer \u00e7al\u0131\u015fma projesi \/home\/kullanici\/repos\/work\/ alt\u0131ndaysa\n    if [[ \"$GIT_ROOT\" == \"$HOME\/repos\/work\"* ]]; then\n        # Kurumsal bilgileri ayarla\n        if [ \"$(git config user.email)\" != \"$WORK_EMAIL\" ]; then\n            git config user.email \"$WORK_EMAIL\"\n            git config user.name \"$WORK_NAME\"\n            echo \"\u2705 Git kimli\u011fi kurumsal hesaba ayarland\u0131: $WORK_EMAIL\"\n        fi\n    else\n        # Di\u011fer t\u00fcm projeler i\u00e7in ki\u015fisel bilgileri ayarla\n        if [ \"$(git config user.email)\" != \"$PERSONAL_EMAIL\" ]; then\n            git config user.email \"$PERSONAL_EMAIL\"\n            git config user.name \"$PERSONAL_NAME\"\n            echo \"\u2705 Git kimli\u011fi ki\u015fisel hesaba ayarland\u0131: $PERSONAL_EMAIL\"\n        fi\n    fi\nfi\n<\/pre>\n<p><\/code><\/p>\n<div class=\"uzman-ipucu\">\n  <strong>Uzman \u0130pucu:<\/strong> Yukar\u0131daki script'i daha da esnek hale getirmek i\u00e7in, <code>case<\/code> yap\u0131s\u0131 kullanarak farkl\u0131 dizinlere g\u00f6re birden fazla kurumsal veya ki\u015fisel profil tan\u0131mlayabilirsiniz. \u00d6rne\u011fin, <code>~\/repos\/client_a\/<\/code> i\u00e7in farkl\u0131, <code>~\/repos\/client_b\/<\/code> i\u00e7in farkl\u0131 e-posta adresleri belirleyebilirsiniz.\n<\/div>\n<p>Bu script'i her yeni terminal oturumunda otomatik olarak \u00e7al\u0131\u015ft\u0131rmak i\u00e7in, shell yap\u0131land\u0131rma dosyan\u0131za (<code>~\/.bashrc<\/code>, <code>~\/.zshrc<\/code> veya <code>~\/.profile<\/code>) a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyin:<\/p>\n<pre><code>\n# Her terminal a\u00e7\u0131l\u0131\u015f\u0131nda veya dizin de\u011fi\u015fikli\u011finde Git kimli\u011fini kontrol et\nexport PROMPT_COMMAND='eval \"$HOME\/.git_profile_switcher.sh; $PROMPT_COMMAND\"'\n<\/pre>\n<p><\/code><\/p>\n<p><strong>D\u0130KKAT:<\/strong> <code>PROMPT_COMMAND<\/code> de\u011fi\u015fkeni Bash'te her komut \u00e7al\u0131\u015ft\u0131ktan sonra veya her yeni komut istemi g\u00f6sterilmeden \u00f6nce \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Bu, her dizin de\u011fi\u015ftirdi\u011finizde script'in kontrol yapaca\u011f\u0131 anlam\u0131na gelir. Zsh kullan\u0131yorsan\u0131z, <code>precmd_functions<\/code> array'ine benzer \u015fekilde eklemeniz gerekebilir.<\/p>\n<pre><code>\n# Zsh i\u00e7in (\u00f6rne\u011fin ~\/.zshrc i\u00e7ine):\nadd-zsh-hook precmd ~\/.git_profile_switcher.sh\n<\/pre>\n<p><\/code><\/p>\n<p>Bu ayarlamalarla, art\u0131k bir Git deposunun i\u00e7ine girdi\u011finizde veya bir proje \u00fczerinde \u00e7al\u0131\u015fmaya ba\u015flad\u0131\u011f\u0131n\u0131zda, script otomatik olarak devreye girecek ve do\u011fru Git kimli\u011fini ayarlayacakt\u0131r. Bu sayede, yanl\u0131\u015fl\u0131kla ki\u015fisel e-postan\u0131zla kurumsal bir commit atma riskini ortadan kald\u0131rm\u0131\u015f olursunuz.<\/p>\n<h3>Vaka Analizi: Bir Freelancer'\u0131n Ki\u015fisel ve M\u00fc\u015fteri Projeleri Aras\u0131nda Otomatik Ge\u00e7i\u015fi<\/h3>\n<p>Gizem, hem ki\u015fisel a\u00e7\u0131k kaynak projeleri geli\u015ftiren hem de birden fazla m\u00fc\u015fteriye hizmet veren bir freelancer'd\u0131. Daha \u00f6nce s\u0131k s\u0131k, bir m\u00fc\u015fterinin projesinde \u00e7al\u0131\u015f\u0131rken yanl\u0131\u015fl\u0131kla ki\u015fisel GitHub no-reply e-posta adresiyle commit at\u0131yor veya kendi ki\u015fisel projesinde m\u00fc\u015fteriye \u00f6zel e-posta adresini kullan\u0131yordu. Bu durum hem profesyonellikten uzak duruyordu hem de Gizem'in kafas\u0131n\u0131 kar\u0131\u015ft\u0131r\u0131yordu. Yukar\u0131daki shell script \u00e7\u00f6z\u00fcm\u00fcn\u00fc uygulad\u0131. Ev dizininde <code>~\/projects\/personal\/<\/code> alt\u0131nda ki\u015fisel projelerini, <code>~\/projects\/clients\/client_A\/<\/code> ve <code>~\/projects\/clients\/client_B\/<\/code> alt\u0131nda ise m\u00fc\u015fteri projelerini tutuyordu.<\/p>\n<p>Script'ini a\u015fa\u011f\u0131daki gibi g\u00fcncelledi:<\/p>\n<pre><code>\n#!\/bin\/bash\n\n# Ki\u015fisel profil\nPERSONAL_EMAIL=\"gizemin.eposta@users.noreply.github.com\"\nPERSONAL_NAME=\"Gizem Demir\"\n\n# M\u00fc\u015fteri A profili\nCLIENT_A_EMAIL=\"gizem@client-a-domain.com\"\nCLIENT_A_NAME=\"Gizem Demir (Client A)\"\n\n# M\u00fc\u015fteri B profili\nCLIENT_B_EMAIL=\"gizem.d@client-b-domain.com\"\nCLIENT_B_NAME=\"Gizem Demir (Client B)\"\n\n# ... di\u011fer profiller ...\n\nif git rev-parse --is-inside-work-tree &>\/dev\/null; then\n    GIT_ROOT=$(git rev-parse --show-toplevel)\n\n    if [[ \"$GIT_ROOT\" == \"$HOME\/projects\/clients\/client_A\"* ]]; then\n        if [ \"$(git config user.email)\" != \"$CLIENT_A_EMAIL\" ]; then\n            git config user.email \"$CLIENT_A_EMAIL\"\n            git config user.name \"$CLIENT_A_NAME\"\n            echo \"\u2705 Git kimli\u011fi Client A projesine ayarland\u0131: $CLIENT_A_EMAIL\"\n        fi\n    elif [[ \"$GIT_ROOT\" == \"$HOME\/projects\/clients\/client_B\"* ]]; then\n        if [ \"$(git config user.email)\" != \"$CLIENT_B_EMAIL\" ]; then\n            git config user.email \"$CLIENT_B_EMAIL\"\n            git config user.name \"$CLIENT_B_NAME\"\n            echo \"\u2705 Git kimli\u011fi Client B projesine ayarland\u0131: $CLIENT_B_EMAIL\"\n        fi\n    # ... di\u011fer m\u00fc\u015fteri projeleri ...\n    else # Varsay\u0131lan olarak ki\u015fisel projeler\n        if [ \"$(git config user.email)\" != \"$PERSONAL_EMAIL\" ]; then\n            git config user.email \"$PERSONAL_EMAIL\"\n            git config user.name \"$PERSONAL_NAME\"\n            echo \"\u2705 Git kimli\u011fi ki\u015fisel projeye ayarland\u0131: $PERSONAL_EMAIL\"\n        fi\n    fi\nfi\n<\/pre>\n<p><\/code><\/p>\n<p>Bu basit d\u00fczenleme sayesinde, Gizem art\u0131k m\u00fc\u015fteriler aras\u0131nda veya ki\u015fisel projelerine ge\u00e7erken hi\u00e7bir manuel ayar yapm\u0131yordu. Her dizin de\u011fi\u015ftirdi\u011finde veya yeni bir terminal oturumu a\u00e7t\u0131\u011f\u0131nda, script otomatik olarak do\u011fru kimli\u011fi ayarl\u0131yor ve Gizem tamamen kod yazmaya odaklanabiliyordu. Bu, hem zaman kazand\u0131rd\u0131 hem de olas\u0131 gizlilik ihlallerini ve profesyonel hatalar\u0131 ortadan kald\u0131rd\u0131. Bu t\u00fcr otomasyonlar, \u00f6zellikle yo\u011fun \u00e7al\u0131\u015fan geli\u015ftiriciler i\u00e7in paha bi\u00e7ilmezdir.<\/p>\n<style>\n.responsive-code-block {\n    background-color: #272822; \/* Dracula theme background *\/\n    color: #f8f8f2; \/* Dracula theme foreground *\/\n    padding: 15px;\n    border-radius: 8px;\n    font-family: 'Fira Code', 'Cascadia Code', monospace;\n    overflow-x: auto; \/* Enable horizontal scrolling for small screens *\/\n    white-space: pre; \/* Preserve whitespace for code *\/\n    box-shadow: 0 4px 8px rgba(0,0,0,0.2);\n    margin-bottom: 20px;\n    line-height: 1.4;\n}<\/p>\n<p>@media (max-width: 768px) {\n    .responsive-code-block {\n        padding: 10px;\n        font-size: 0.9em; \/* Smaller font on mobile *\/\n    }\n}\n<\/style>\n<div class=\"responsive-code-block\">\n  <code><br \/>\n    \/* Bu bir CSS \u00f6rne\u011fidir, mobil uyumluluk i\u00e7in *\/<br \/>\n    .responsive-code-block {<br \/>\n        overflow-x: auto; \/* K\u00fc\u00e7\u00fck ekranlarda yatay kayd\u0131rma \u00e7ubu\u011fu *\/<br \/>\n    }<br \/>\n    @media (max-width: 600px) {<br \/>\n        .responsive-code-block {<br \/>\n            font-size: 0.85em; \/* Mobil cihazlarda font boyutunu k\u00fc\u00e7\u00fclt *\/<br \/>\n            padding: 10px;<br \/>\n        }<br \/>\n    }<br \/>\n  <\/code>\n<\/div>\n<h2>\u0130leri D\u00fczey Git Gizlili\u011fi: Hooks Kullanarak Daha Fazla Otomasyon ve G\u00fcvenlik<\/h2>\n<p>Shell script \u00e7\u00f6z\u00fcm\u00fc, \u00e7o\u011fu senaryo i\u00e7in olduk\u00e7a yeterli ve kullan\u0131\u015fl\u0131d\u0131r. Ancak, Git'in kendi b\u00fcnyesinde sundu\u011fu \"hooks\" (kancalar) \u00f6zelli\u011fi ile \u00e7ok daha entegre ve g\u00fc\u00e7l\u00fc otomasyonlar kurabiliriz. Git hooks, belirli Git olaylar\u0131 (\u00f6rne\u011fin commit \u00f6ncesi, push sonras\u0131, branch de\u011fi\u015ftirme sonras\u0131) tetiklendi\u011finde otomatik olarak \u00e7al\u0131\u015ft\u0131r\u0131lan script'lerdir. Bu sayede, Git i\u015f ak\u0131\u015f\u0131n\u0131z\u0131n do\u011fal bir par\u00e7as\u0131 olarak gizlilik ayarlar\u0131n\u0131z\u0131 otomatik olarak y\u00f6netebilirsiniz. Bu b\u00f6l\u00fcm, Git hooks'u kullanarak gizlilik otomasyonunuzu bir ad\u0131m \u00f6teye nas\u0131l ta\u015f\u0131yaca\u011f\u0131n\u0131z\u0131 ele alacak.<\/p>\n<h3>Git Hooks Nedir ve Neden Kullanmal\u0131y\u0131z?<\/h3>\n<p>Git hooks, Git depolama alan\u0131n\u0131zdaki <code>.git\/hooks<\/code> dizininde bulunan y\u00fcr\u00fct\u00fclebilir script'lerdir. Git, belirli bir olay ger\u00e7ekle\u015fti\u011finde (\u00f6rne\u011fin <code>git commit<\/code> komutu verildi\u011finde veya bir branch'ten di\u011ferine ge\u00e7ti\u011finizde) bu dizindeki ilgili hook script'ini otomatik olarak \u00e7al\u0131\u015ft\u0131r\u0131r. \u0130ki ana hook t\u00fcr\u00fc vard\u0131r: client-side (istemci taraf\u0131) ve server-side (sunucu taraf\u0131).<\/p>\n<ul>\n<li><strong>Client-Side Hooks:<\/strong> Geli\u015ftiricinin kendi yerel makinesinde \u00e7al\u0131\u015f\u0131r ve <code>commit<\/code>, <code>merge<\/code>, <code>rebase<\/code> gibi yerel depo i\u015flemlerini etkiler. Genellikle kod format\u0131n\u0131 kontrol etmek, commit mesajlar\u0131n\u0131 do\u011frulamak veya bizim \u00f6rne\u011fimizdeki gibi Git yap\u0131land\u0131rmas\u0131n\u0131 dinamik olarak ayarlamak i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><strong>Server-Side Hooks:<\/strong> Git sunucusunda \u00e7al\u0131\u015f\u0131r ve bir push i\u015flemi gibi uzaktan depo olaylar\u0131na yan\u0131t verir. Genellikle politikalar\u0131 uygulamak, eri\u015fim kontrollerini y\u00f6netmek veya CI\/CD tetiklemek i\u00e7in kullan\u0131l\u0131r.<\/li>\n<\/ul>\n<p>Bizim durumumuzda, <code>client-side<\/code> hook'lar, \u00f6zellikle <code>post-checkout<\/code> ve <code>post-merge<\/code> hook'lar\u0131, projeler aras\u0131nda ge\u00e7i\u015f yapt\u0131\u011f\u0131m\u0131zda Git kimli\u011fimizi otomatik olarak g\u00fcncellemek i\u00e7in idealdir. Bu hook'lar\u0131 kullanmak, manuel m\u00fcdahaleyi tamamen ortadan kald\u0131r\u0131r ve Git i\u015f ak\u0131\u015f\u0131n\u0131za kusursuz bir \u015fekilde entegre olur.<\/p>\n<div class=\"uzman-ipucu\">\n  <strong>Uzman \u0130pucu: Hook'lar\u0131 Payla\u015fmak:<\/strong> Hooks'lar <code>.git\/hooks<\/code> dizininde yer al\u0131r ve Git deposuna dahil edilmez. Bu, her geli\u015ftiricinin kendi hooks'lar\u0131n\u0131 manuel olarak kurmas\u0131 gerekti\u011fi anlam\u0131na gelir. Ekibinizle hook'lar\u0131 payla\u015fmak isterseniz, bu hook'lar\u0131 ayr\u0131 bir dizinde tutup (\u00f6rne\u011fin <code>.githooks\/<\/code>) ve ard\u0131ndan <code>git config core.hooksPath .githooks<\/code> komutu ile Git'e bu dizini tan\u0131tman\u0131z gerekir. Bu sayede, hook'lar\u0131 versiyon kontrol\u00fc alt\u0131nda tutabilirsiniz.\n<\/div>\n<h3><code>post-checkout<\/code> Hook'u ile Proje Baz\u0131nda E-posta Otomatik Ayarlama<\/h3>\n<p><code>post-checkout<\/code> hook'u, Git'te bir branch de\u011fi\u015ftirdi\u011finizde (<code>git checkout branch_ad\u0131<\/code>) veya bir depoyu klonlad\u0131\u011f\u0131n\u0131zda (<code>git clone<\/code>) \u00e7al\u0131\u015f\u0131r. Bu, do\u011fru Git kimli\u011fini ayarlamak i\u00e7in m\u00fckemmel bir an sa\u011flar.<\/p>\n<p>Her Git deposunun <code>.git\/hooks<\/code> dizininde \u00f6rnek hook'lar bulunur (<code>.sample<\/code> uzant\u0131l\u0131). Biz kendi <code>post-checkout<\/code> hook'umuzu olu\u015fturaca\u011f\u0131z. \u0130lk olarak, projenizin k\u00f6k dizinindeki <code>.git\/hooks\/<\/code> klas\u00f6r\u00fcne gidin:<\/p>\n<pre><code>\ncd path\/to\/your\/git\/repo\/.git\/hooks\n<\/pre>\n<p><\/code><\/p>\n<p>Burada <code>post-checkout<\/code> ad\u0131nda bir dosya olu\u015fturun ve y\u00fcr\u00fct\u00fclebilir yap\u0131n:<\/p>\n<pre><code>\ntouch post-checkout\nchmod +x post-checkout\n<\/pre>\n<p><\/code><\/p>\n<p>\u015eimdi bu <code>post-checkout<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n ve a\u015fa\u011f\u0131daki i\u00e7eri\u011fi ekleyin. Bu \u00f6rnekte, belirli bir projenin k\u00f6k dizininde oldu\u011fumuzu varsayarak ona \u00f6zel bir e-posta ayarlayaca\u011f\u0131z. E\u011fer farkl\u0131 bir projedeyse, varsay\u0131lan (global) ayarlar\u0131 kullanmaya devam edece\u011fiz. \u00d6nceki shell script'teki <code>if<\/code> mant\u0131\u011f\u0131n\u0131 buraya ta\u015f\u0131yoruz:<\/p>\n<pre><code>\n#!\/bin\/bash\n\n# $1, $2, $3 checkout'tan \u00f6nceki HEAD, sonraki HEAD ve branch tipi (0=branch, 1=file)\nOLDREV=$1\nNEWREV=$2\nBRANCH_TYPE=$3\n\n# Ki\u015fisel no-reply e-posta ve ad\u0131 (varsay\u0131lan)\nDEFAULT_EMAIL=\"12345678+kisisel_kullanici@users.noreply.github.com\"\nDEFAULT_NAME=\"Ki\u015fisel Kullan\u0131c\u0131 Ad\u0131n\u0131z\"\n\n# Bu projeye \u00f6zel ayarlar (\u00f6rne\u011fin, bir i\u015f projesi)\nPROJECT_EMAIL=\"kurumsal.eposta@sirketim.com\"\nPROJECT_NAME=\"Kurumsal Kullan\u0131c\u0131 Ad\u0131n\u0131z\"\n\n# \u00c7al\u0131\u015fma dizininin ana dizinini bul\nGIT_ROOT=$(git rev-parse --show-toplevel)\n\n# E\u011fer bu script'i belirli bir proje i\u00e7in kullan\u0131yorsan\u0131z, o projenin yolunu kontrol edebilirsiniz.\n# \u00d6rne\u011fin, projeniz \/home\/kullanici\/repos\/my-work-project ise\nif [[ \"$GIT_ROOT\" == \"$HOME\/repos\/my-work-project\" ]]; then\n    # Kurumsal bilgileri ayarla (sadece farkl\u0131ysa ayarla)\n    if [ \"$(git config user.email)\" != \"$PROJECT_EMAIL\" ]; then\n        git config user.email \"$PROJECT_EMAIL\"\n        git config user.name \"$PROJECT_NAME\"\n        echo \"\u2705 [Hook] Git kimli\u011fi 'my-work-project' i\u00e7in ayarland\u0131: $PROJECT_EMAIL\"\n    fi\nelse\n    # Di\u011fer t\u00fcm projeler i\u00e7in varsay\u0131lan\u0131 kullan (global'\u0131 b\u0131rak veya ba\u015fka bir ayar yap)\n    # Global ayar\u0131 kullanmak i\u00e7in local ayar\u0131 silinebilir.\n    # Bu k\u0131sm\u0131 dikkatli kullan\u0131n, global ayar zaten do\u011fruysa dokunmay\u0131n.\n    # \u00d6rne\u011fin, global ayar\u0131n ki\u015fisel no-reply oldu\u011funu varsayarsak:\n    if [ \"$(git config user.email)\" != \"$DEFAULT_EMAIL\" ]; then\n        # E\u011fer bu projenin yerel ayarlar\u0131 default'tan farkl\u0131ysa, onu default'a \u00e7ek.\n        # Bu, proje baz\u0131nda ayar\u0131 kald\u0131rmak ve global'a d\u00f6nmek i\u00e7in kullan\u0131labilir.\n        # git config --unset user.email\n        # git config --unset user.name\n        # Ya da a\u00e7\u0131k\u00e7a default'a ayarla:\n        git config user.email \"$DEFAULT_EMAIL\"\n        git config user.name \"$DEFAULT_NAME\"\n        echo \"\u2705 [Hook] Git kimli\u011fi varsay\u0131lan ki\u015fisel hesaba ayarland\u0131: $DEFAULT_EMAIL\"\n    fi\nfi\n\n# Not: Bu hook sadece bu depo i\u00e7in ge\u00e7erlidir. Di\u011fer depolar i\u00e7in ayr\u0131 ayr\u0131 kurulmas\u0131 gerekir\n# Veya <code>core.hooksPath<\/code> kullanarak t\u00fcm depolarda ayn\u0131 hook'lar\u0131 payla\u015fabilirsiniz.\n<\/pre>\n<p><\/code><\/p>\n<p>Bu hook, <code>my-work-project<\/code> adl\u0131 bir depoya her ge\u00e7ti\u011finizde veya bu depoyu klonlad\u0131\u011f\u0131n\u0131zda, Git kimli\u011finizi otomatik olarak kurumsal e-posta adresinize ayarlayacakt\u0131r. Di\u011fer t\u00fcm depolarda ise, varsay\u0131lan olarak global ayarlar\u0131n\u0131z ge\u00e7erli olacakt\u0131r (ki bu genellikle ki\u015fisel no-reply e-postan\u0131z olmal\u0131d\u0131r). E\u011fer farkl\u0131 projeler i\u00e7in farkl\u0131 e-postalar\u0131n\u0131z varsa, bu hook'u <code>case<\/code> yap\u0131s\u0131 veya ek <code>if\/elif<\/code> ko\u015fullar\u0131 ile geni\u015fletebilirsiniz.<\/p>\n<p>Benzer \u015fekilde, <code>post-merge<\/code> hook'u da bir branch birle\u015ftirme (<code>git merge<\/code>) i\u015flemi sonras\u0131 \u00e7al\u0131\u015f\u0131r ve benzer kontrol mant\u0131klar\u0131 i\u00e7in kullan\u0131labilir.<\/p>\n<h3>Olas\u0131 Sorunlar ve \u00c7\u00f6z\u00fcmleri: Hata Ay\u0131klama ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>Otomasyon kurarken baz\u0131 sorunlarla kar\u015f\u0131la\u015fmak do\u011fald\u0131r. \u0130\u015fte s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<ol>\n<li>\n        <strong>Script \u0130zinleri:<\/strong> Hook script'inizin veya shell script'inizin y\u00fcr\u00fctme izni (<code>chmod +x<\/code>) yoksa \u00e7al\u0131\u015fmaz. Mutlaka <code>chmod +x your_script.sh<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun.\n    <\/li>\n<li>\n        <strong>Yanl\u0131\u015f Yap\u0131land\u0131rma:<\/strong> Script'teki e-posta adreslerini ve kullan\u0131c\u0131 adlar\u0131n\u0131 do\u011fru yazd\u0131\u011f\u0131n\u0131zdan emin olun. K\u00fc\u00e7\u00fck bir yaz\u0131m hatas\u0131 bile sistemin \u00e7al\u0131\u015fmamas\u0131na neden olabilir.\n    <\/li>\n<li>\n        <strong>Global vs. Yerel \u00c7ak\u0131\u015fmalar:<\/strong> Unutmay\u0131n ki yerel Git yap\u0131land\u0131rmas\u0131 (<code>.git\/config<\/code>) her zaman global yap\u0131land\u0131rmay\u0131 (<code>~\/.gitconfig<\/code>) ge\u00e7ersiz k\u0131lar. E\u011fer hook'unuz yerel bir ayar\u0131 yap\u0131yorsa, global ayar\u0131n\u0131z\u0131n ne oldu\u011funun \u00f6nemi kalmaz. Bu tablo, farklar\u0131 \u00f6zetlemektedir:<\/p>\n<table>\n<thead>\n<tr>\n<th>\u00d6zellik<\/th>\n<th>Global Git Yap\u0131land\u0131rmas\u0131 (<code>--global<\/code>)<\/th>\n<th>Yerel Git Yap\u0131land\u0131rmas\u0131 (<code>--local<\/code>)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Dosya Yolu<\/td>\n<td><code>~\/.gitconfig<\/code><\/td>\n<td><code>.git\/config<\/code> (projenin i\u00e7inde)<\/td>\n<\/tr>\n<tr>\n<td>Ge\u00e7erlilik Alan\u0131<\/td>\n<td>T\u00fcm Git depolar\u0131 i\u00e7in varsay\u0131lan<\/td>\n<td>Sadece belirli Git deposu i\u00e7in<\/td>\n<\/tr>\n<tr>\n<td>\u00d6ncelik<\/td>\n<td>En d\u00fc\u015f\u00fck \u00f6ncelik<\/td>\n<td>En y\u00fcksek \u00f6ncelik (global'\u0131 ge\u00e7ersiz k\u0131lar)<\/td>\n<\/tr>\n<tr>\n<td>Kullan\u0131m Durumu<\/td>\n<td>Genel tercihlerinizi ayarlamak<\/td>\n<td>Proje baz\u0131nda \u00f6zel ayarlar yapmak (\u00f6rn. e-posta)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<li>\n        <strong>Hata Ay\u0131klama:<\/strong> Script'inizin i\u00e7ine <code>echo \"Hata ay\u0131klama mesaj\u0131\"<\/code> gibi sat\u0131rlar ekleyerek veya <code>set -x<\/code> komutuyla script'i ad\u0131m ad\u0131m \u00e7al\u0131\u015ft\u0131rarak nerede tak\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6rebilirsiniz.\n    <\/li>\n<li>\n        <strong>Shell Yap\u0131land\u0131rmas\u0131:<\/strong> Shell script'ini otomatik \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>~\/.bashrc<\/code> veya <code>~\/.zshrc<\/code> dosyan\u0131za ekledi\u011finiz komutun do\u011fru oldu\u011fundan ve shell'inizi yeniden ba\u015flatt\u0131ktan sonra etkinle\u015fti\u011finden emin olun (<code>source ~\/.bashrc<\/code>).\n    <\/li>\n<\/ol>\n<p>Bu ad\u0131mlarla, Git gizlili\u011finizi en \u00fcst d\u00fczeye \u00e7\u0131karacak ve farkl\u0131 projeler aras\u0131nda sorunsuz bir \u015fekilde ge\u00e7i\u015f yapman\u0131z\u0131 sa\u011flayacak g\u00fc\u00e7l\u00fc bir otomasyon sistemine sahip olacaks\u0131n\u0131z. Art\u0131k \"yanl\u0131\u015fl\u0131kla\" commit atma endi\u015fesi olmadan, sadece kod yazmaya odaklanabilirsiniz.<\/p>\n<h2>Sonu\u00e7: Git Gizlili\u011finizi Sonsuza Dek Korumak<\/h2>\n<p>Git projelerinizde ki\u015fisel ve profesyonel kimliklerinizin kar\u0131\u015fmas\u0131, hem gizlilik riskleri hem de gereksiz i\u015f y\u00fck\u00fc yaratabilen yayg\u0131n bir sorundur. Bu makalede ele ald\u0131\u011f\u0131m\u0131z \"set-and-forget\" yakla\u015f\u0131m\u0131 sayesinde, art\u0131k bu endi\u015feleri geride b\u0131rakabilirsiniz. GitHub ve GitLab'\u0131n sundu\u011fu no-reply e-posta adreslerini ke\u015ffetmekle ba\u015flayarak, Git'in global ve yerel yap\u0131land\u0131rma yeteneklerini temel ald\u0131k. Ard\u0131ndan, proje baz\u0131nda e-posta adreslerinizi otomatik olarak de\u011fi\u015ftiren ak\u0131ll\u0131 shell script'ler ve ileri d\u00fczey Git hooks kullan\u0131m\u0131yla bu s\u00fcreci nas\u0131l tamamen otomatikle\u015ftirebilece\u011finizi ad\u0131m ad\u0131m g\u00f6sterdik.<\/p>\n<p>\u00d6zellikle freelancer'lar, a\u00e7\u0131k kaynak geli\u015ftiricileri ve birden fazla projede \u00e7al\u0131\u015fan herkes i\u00e7in bu otomasyonlar paha bi\u00e7ilmezdir. Manuel olarak <code>git config<\/code> komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rma y\u00fck\u00fcnden kurtulurken, yanl\u0131\u015f e-posta adresiyle commit atma riskini de tamamen ortadan kald\u0131rm\u0131\u015f olursunuz. Bu sayede, hem profesyonel itibar\u0131n\u0131z\u0131 korursunuz hem de ki\u015fisel verilerinizin gizlili\u011fini g\u00fcvence alt\u0131na al\u0131rs\u0131n\u0131z. Bu basit ama etkili \u00e7\u00f6z\u00fcmler, geli\u015ftirme i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 daha verimli, g\u00fcvenli ve sorunsuz hale getirecektir. Git'in g\u00fc\u00e7l\u00fc \u00f6zelliklerini kullanarak, gizlili\u011finizi kontrol alt\u0131na al\u0131n ve sadece en iyi kodunuzu yazmaya odaklan\u0131n. Unutmay\u0131n, iyi bir geli\u015ftirici, tekrarlayan g\u00f6revleri otomatikle\u015ftiren geli\u015ftiricidir!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<dl>\n<dt>1. No-reply e-posta adresini kullanmak commit ge\u00e7mi\u015fimi etkiler mi?<\/dt>\n<dd>Hay\u0131r, kesinlikle etkilemez. No-reply e-posta adresi, GitHub veya GitLab profilinizle ili\u015fkilendirilmi\u015f benzersiz bir tan\u0131mlay\u0131c\u0131d\u0131r. Bu adresle yap\u0131lan commit'ler, normal bir e-posta adresiyle yap\u0131lm\u0131\u015f gibi profilinizde g\u00f6r\u00fcn\u00fcr ve katk\u0131 grafi\u011finize yans\u0131r. Tek fark, ger\u00e7ek e-posta adresinizin herkes taraf\u0131ndan g\u00f6r\u00fclememesidir, bu da gizlili\u011finizi korur.<\/dd>\n<dt>2. Bu y\u00f6ntem GitLab Enterprise veya \u00f6zel Git sunucular\u0131nda da \u00e7al\u0131\u015f\u0131r m\u0131?<\/dt>\n<dd>Evet, temel Git yap\u0131land\u0131rmas\u0131 (<code>git config --global<\/code> ve <code>--local<\/code>) ve Git hooks mekanizmas\u0131 t\u00fcm standart Git depolar\u0131nda ve sunucular\u0131nda (GitLab Enterprise, Bitbucket, Azure DevOps veya kendi bar\u0131nd\u0131rd\u0131\u011f\u0131n\u0131z Git sunucusu) \u00e7al\u0131\u015f\u0131r. GitLab Enterprise i\u00e7in de benzer bir \"private commit email\" ayar\u0131 bulabilirsiniz. Ancak, platforma \u00f6zel no-reply adresi format\u0131 biraz farkl\u0131l\u0131k g\u00f6sterebilir, bu y\u00fczden ayarlar sayfan\u0131z\u0131 kontrol etmeniz en do\u011frusudur.<\/dd>\n<dt>3. Otomatik ge\u00e7i\u015f script'ini her yeni projede mi kurmal\u0131y\u0131m?<\/dt>\n<dd>Hay\u0131r, shell script'ini (\u00f6rne\u011fin <code>~\/.git_profile_switcher.sh<\/code>) bir kez olu\u015fturup shell yap\u0131land\u0131rma dosyan\u0131za (<code>~\/.bashrc<\/code> veya <code>~\/.zshrc<\/code>) ekledikten sonra, bu script sisteminizde s\u00fcrekli \u00e7al\u0131\u015f\u0131r. Hook'lar ise (<code>.git\/hooks\/post-checkout<\/code> gibi) her depo i\u00e7in ayr\u0131 ayr\u0131 ayarlanmas\u0131 gereken yerel dosyalard\u0131r. E\u011fer \u00e7ok say\u0131da depoda ayn\u0131 hook'u kullanmak isterseniz, <code>git config core.hooksPath<\/code> komutunu kullanarak tek bir global hook dizini belirleyebilirsiniz.<\/dd>\n<dt>4. <code>user.name<\/code> bilgisini de otomatik de\u011fi\u015ftirebilir miyim?<\/dt>\n<dd>Evet, makaledeki script \u00f6rneklerinde g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, <code>user.email<\/code> ile birlikte <code>user.name<\/code> bilgisini de ayn\u0131 \u015fekilde otomatik olarak de\u011fi\u015ftirebilirsiniz. Bu, commit'lerinizde g\u00f6r\u00fcnen ad\u0131n\u0131z\u0131n da projenin ba\u011flam\u0131na uygun olmas\u0131n\u0131 sa\u011flar (\u00f6rne\u011fin, ki\u015fisel projeler i\u00e7in 'Kullan\u0131c\u0131 Ad\u0131n\u0131z', kurumsal projeler i\u00e7in '\u015eirket Ad\u0131 - Kullan\u0131c\u0131 Ad\u0131n\u0131z').<\/dd>\n<dt>5. Script'i yanl\u0131\u015f yap\u0131land\u0131r\u0131rsam ne olur?<\/dt>\n<dd>Yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f bir script genellikle Git komutlar\u0131n\u0131z\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015fmamas\u0131na veya yanl\u0131\u015f e-posta adresleriyle commit'ler olu\u015fturulmas\u0131na neden olabilir. En k\u00f6t\u00fc senaryoda, shell'inizin ba\u015flang\u0131\u00e7 s\u00fcrecini bozabilir. E\u011fer script'iniz \u00e7al\u0131\u015fm\u0131yorsa veya beklenmedik davran\u0131\u015flar sergiliyorsa:<\/p>\n<ol>\n<li>Script dosyas\u0131n\u0131n y\u00fcr\u00fctme iznine sahip oldu\u011fundan emin olun (<code>chmod +x<\/code>).<\/li>\n<li>Script'teki e-posta adresleri ve dizin yollar\u0131n\u0131n do\u011fru oldu\u011fundan emin olun.<\/li>\n<li>Shell yap\u0131land\u0131rma dosyan\u0131zdaki (<code>.bashrc<\/code> vb.) script \u00e7a\u011f\u0131rma komutunu ge\u00e7ici olarak kald\u0131r\u0131n ve shell'inizi yeniden ba\u015flat\u0131n.<\/li>\n<li>Script'in i\u00e7ine <code>echo<\/code> mesajlar\u0131 ekleyerek nerede tak\u0131ld\u0131\u011f\u0131n\u0131 belirleyin veya script'i <code>bash -x your_script.sh<\/code> ile \u00e7al\u0131\u015ft\u0131rarak ad\u0131m ad\u0131m ne yapt\u0131\u011f\u0131n\u0131 izleyin.<\/li>\n<li>Git'in global ve yerel yap\u0131land\u0131rmalar\u0131n\u0131 manuel olarak kontrol edin (<code>git config --global --list<\/code> ve <code>git config --local --list<\/code>).<\/li>\n<\/ol>\n<p>        Bu ad\u0131mlar, \u00e7o\u011fu hatay\u0131 ay\u0131klaman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/dd>\n<\/dl>\n","protected":false},"excerpt":{"rendered":"Ki\u015fisel Git projelerinizde \u00f6zel e-postan\u0131z\u0131, i\u015f projelerinizde ise kurumsal veya GitHub\/GitLab taraf\u0131ndan sa\u011flanan no-reply adresinizi kar\u0131\u015ft\u0131rmaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131?&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1401],"tags":[],"class_list":{"0":"post-35804","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-git","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Set-and-Forget Git Privacy in 5 Minutes: Auto-Switch No-Reply Emails for GitHub\/GitLab<\/title>\n<meta name=\"description\" content=\"Ki\u015fisel Git projelerinizde \u00f6zel e-postan\u0131z\u0131, i\u015f projelerinizde ise kurumsal veya GitHub\/GitLab taraf\u0131ndan sa\u011flanan no-reply adresinizi kar\u0131\u015ft\u0131rmaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Bu durum sadece gizlilik ihlallerine yol a\u00e7makla kalmaz, ayn\u0131 zamanda profesyonel itibar\u0131n\u0131z\u0131 da zedeleyebilir. Endi\u015felenmeyin! Bu makale, Git yap\u0131land\u0131rman\u0131z\u0131 otomatikle\u015ftirerek bu sorunu 5 dakikada kal\u0131c\u0131 olarak \u00e7\u00f6zmenizi sa\u011flayacak, ak\u0131ll\u0131 bir otomasyon rehberi sunuyor. Art\u0131k her projeye \u00f6zel e-posta adresinizi manuel olarak de\u011fi\u015ftirmek zorunda kalmayacaks\u0131n\u0131z, Git sizin i\u00e7in bu hassas ge\u00e7i\u015fi otomatik olarak y\u00f6netecek.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Set-and-Forget Git Privacy in 5 Minutes: Auto-Switch No-Reply Emails for GitHub\/GitLab\" \/>\n<meta property=\"og:description\" content=\"Ki\u015fisel Git projelerinizde \u00f6zel e-postan\u0131z\u0131, i\u015f projelerinizde ise kurumsal veya GitHub\/GitLab taraf\u0131ndan sa\u011flanan no-reply adresinizi kar\u0131\u015ft\u0131rmaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Bu durum sadece gizlilik ihlallerine yol a\u00e7makla kalmaz, ayn\u0131 zamanda profesyonel itibar\u0131n\u0131z\u0131 da zedeleyebilir. Endi\u015felenmeyin! Bu makale, Git yap\u0131land\u0131rman\u0131z\u0131 otomatikle\u015ftirerek bu sorunu 5 dakikada kal\u0131c\u0131 olarak \u00e7\u00f6zmenizi sa\u011flayacak, ak\u0131ll\u0131 bir otomasyon rehberi sunuyor. Art\u0131k her projeye \u00f6zel e-posta adresinizi manuel olarak de\u011fi\u015ftirmek zorunda kalmayacaks\u0131n\u0131z, Git sizin i\u00e7in bu hassas ge\u00e7i\u015fi otomatik olarak y\u00f6netecek.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-03T22:31:03+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"23 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Set-and-Forget Git Privacy in 5 Minutes: Auto-Switch No-Reply Emails for GitHub\/GitLab\",\"datePublished\":\"2025-12-03T22:31:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/\"},\"wordCount\":3627,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Git\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/\",\"name\":\"Set-and-Forget Git Privacy in 5 Minutes: Auto-Switch No-Reply Emails for GitHub\/GitLab\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-03T22:31:03+00:00\",\"description\":\"Ki\u015fisel Git projelerinizde \u00f6zel e-postan\u0131z\u0131, i\u015f projelerinizde ise kurumsal veya GitHub\/GitLab taraf\u0131ndan sa\u011flanan no-reply adresinizi kar\u0131\u015ft\u0131rmaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Bu durum sadece gizlilik ihlallerine yol a\u00e7makla kalmaz, ayn\u0131 zamanda profesyonel itibar\u0131n\u0131z\u0131 da zedeleyebilir. Endi\u015felenmeyin! Bu makale, Git yap\u0131land\u0131rman\u0131z\u0131 otomatikle\u015ftirerek bu sorunu 5 dakikada kal\u0131c\u0131 olarak \u00e7\u00f6zmenizi sa\u011flayacak, ak\u0131ll\u0131 bir otomasyon rehberi sunuyor. Art\u0131k her projeye \u00f6zel e-posta adresinizi manuel olarak de\u011fi\u015ftirmek zorunda kalmayacaks\u0131n\u0131z, Git sizin i\u00e7in bu hassas ge\u00e7i\u015fi otomatik olarak y\u00f6netecek.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Set-and-Forget Git Privacy in 5 Minutes: Auto-Switch No-Reply Emails for GitHub\/GitLab\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Set-and-Forget Git Privacy in 5 Minutes: Auto-Switch No-Reply Emails for GitHub\/GitLab","description":"Ki\u015fisel Git projelerinizde \u00f6zel e-postan\u0131z\u0131, i\u015f projelerinizde ise kurumsal veya GitHub\/GitLab taraf\u0131ndan sa\u011flanan no-reply adresinizi kar\u0131\u015ft\u0131rmaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Bu durum sadece gizlilik ihlallerine yol a\u00e7makla kalmaz, ayn\u0131 zamanda profesyonel itibar\u0131n\u0131z\u0131 da zedeleyebilir. Endi\u015felenmeyin! Bu makale, Git yap\u0131land\u0131rman\u0131z\u0131 otomatikle\u015ftirerek bu sorunu 5 dakikada kal\u0131c\u0131 olarak \u00e7\u00f6zmenizi sa\u011flayacak, ak\u0131ll\u0131 bir otomasyon rehberi sunuyor. Art\u0131k her projeye \u00f6zel e-posta adresinizi manuel olarak de\u011fi\u015ftirmek zorunda kalmayacaks\u0131n\u0131z, Git sizin i\u00e7in bu hassas ge\u00e7i\u015fi otomatik olarak y\u00f6netecek.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/","og_locale":"tr_TR","og_type":"article","og_title":"Set-and-Forget Git Privacy in 5 Minutes: Auto-Switch No-Reply Emails for GitHub\/GitLab","og_description":"Ki\u015fisel Git projelerinizde \u00f6zel e-postan\u0131z\u0131, i\u015f projelerinizde ise kurumsal veya GitHub\/GitLab taraf\u0131ndan sa\u011flanan no-reply adresinizi kar\u0131\u015ft\u0131rmaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Bu durum sadece gizlilik ihlallerine yol a\u00e7makla kalmaz, ayn\u0131 zamanda profesyonel itibar\u0131n\u0131z\u0131 da zedeleyebilir. Endi\u015felenmeyin! Bu makale, Git yap\u0131land\u0131rman\u0131z\u0131 otomatikle\u015ftirerek bu sorunu 5 dakikada kal\u0131c\u0131 olarak \u00e7\u00f6zmenizi sa\u011flayacak, ak\u0131ll\u0131 bir otomasyon rehberi sunuyor. Art\u0131k her projeye \u00f6zel e-posta adresinizi manuel olarak de\u011fi\u015ftirmek zorunda kalmayacaks\u0131n\u0131z, Git sizin i\u00e7in bu hassas ge\u00e7i\u015fi otomatik olarak y\u00f6netecek.","og_url":"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-03T22:31:03+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"23 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Set-and-Forget Git Privacy in 5 Minutes: Auto-Switch No-Reply Emails for GitHub\/GitLab","datePublished":"2025-12-03T22:31:03+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/"},"wordCount":3627,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Git"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/","url":"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/","name":"Set-and-Forget Git Privacy in 5 Minutes: Auto-Switch No-Reply Emails for GitHub\/GitLab","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-03T22:31:03+00:00","description":"Ki\u015fisel Git projelerinizde \u00f6zel e-postan\u0131z\u0131, i\u015f projelerinizde ise kurumsal veya GitHub\/GitLab taraf\u0131ndan sa\u011flanan no-reply adresinizi kar\u0131\u015ft\u0131rmaktan s\u0131k\u0131ld\u0131n\u0131z m\u0131? Bu durum sadece gizlilik ihlallerine yol a\u00e7makla kalmaz, ayn\u0131 zamanda profesyonel itibar\u0131n\u0131z\u0131 da zedeleyebilir. Endi\u015felenmeyin! Bu makale, Git yap\u0131land\u0131rman\u0131z\u0131 otomatikle\u015ftirerek bu sorunu 5 dakikada kal\u0131c\u0131 olarak \u00e7\u00f6zmenizi sa\u011flayacak, ak\u0131ll\u0131 bir otomasyon rehberi sunuyor. Art\u0131k her projeye \u00f6zel e-posta adresinizi manuel olarak de\u011fi\u015ftirmek zorunda kalmayacaks\u0131n\u0131z, Git sizin i\u00e7in bu hassas ge\u00e7i\u015fi otomatik olarak y\u00f6netecek.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/set-and-forget-git-privacy-in-5-minutes-auto-switch-no-reply-emails-for-github-gitlab\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Set-and-Forget Git Privacy in 5 Minutes: Auto-Switch No-Reply Emails for GitHub\/GitLab"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35804","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=35804"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35804\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35804"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35804"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}