{"id":36742,"date":"2025-12-22T12:30:43","date_gmt":"2025-12-22T09:30:43","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/"},"modified":"2025-12-22T12:30:43","modified_gmt":"2025-12-22T09:30:43","slug":"bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/","title":{"rendered":"Bash Prompt&#8217;unuzda Git Branch ve Durumunu G\u00f6sterme: Verimli Geli\u015ftirici Ortam\u0131 \u0130\u00e7in Kapsaml\u0131 K\u0131lavuz"},"content":{"rendered":"<h2>Bash Prompt&#8217;unuzda Git Branch ve Durumunu G\u00f6sterme: Verimli Geli\u015ftirici Ortam\u0131 \u0130\u00e7in Kapsaml\u0131 K\u0131lavuz<\/h2>\n<p>Bir yaz\u0131l\u0131m geli\u015ftiricisi olarak terminalde ge\u00e7irdi\u011fimiz zaman\u0131n \u00f6nemli bir k\u0131sm\u0131, \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131m\u0131z Git deposunun durumu hakk\u0131nda bilgi edinmekle ge\u00e7er. Hangi branch&#8217;te oldu\u011fumuzu, de\u011fi\u015fikliklerin olup olmad\u0131\u011f\u0131n\u0131 veya uzak depoyla senkronize olup olmad\u0131\u011f\u0131m\u0131z\u0131 s\u00fcrekli kontrol etmek, zaman al\u0131c\u0131 ve dikkat da\u011f\u0131t\u0131c\u0131 olabilir. \u0130\u015fte tam da bu noktada, Bash prompt&#8217;unuzu Git bilgileriyle zenginle\u015ftirmek devreye girer. Bu makale, Bash prompt&#8217;unuzu nas\u0131l \u00f6zelle\u015ftirebilece\u011finizi, mevcut Git branch&#8217;ini ve deponun durumunu nas\u0131l g\u00f6sterece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayarak geli\u015ftirme deneyiminizi \u00e7ok daha verimli hale getirmeyi ama\u00e7lamaktad\u0131r.<\/p>\n<h3>Giri\u015f: Neden Git Bilgileri Bash Prompt&#8217;unuzda Olmal\u0131?<\/h3>\n<p>Bash prompt&#8217;unuza Git bilgilerini entegre etmek, geli\u015ftirme s\u00fcrecinizi h\u0131zland\u0131ran ve hatalar\u0131 azaltan kritik bir ad\u0131md\u0131r. Her komut \u00e7al\u0131\u015ft\u0131rman\u0131zdan \u00f6nce, hangi branch&#8217;te oldu\u011funuzu ve deponuzun g\u00fcncel durumunu an\u0131nda g\u00f6rmek, yanl\u0131\u015f branch&#8217;e commit yapma veya \u00fczerinde \u00e7al\u0131\u015f\u0131lan de\u011fi\u015fiklikleri unutma gibi yayg\u0131n hatalar\u0131n \u00f6n\u00fcne ge\u00e7er. Bu \u00f6zellik, \u00f6zellikle birden fazla proje veya branch \u00fczerinde ayn\u0131 anda \u00e7al\u0131\u015fan geli\u015ftiriciler i\u00e7in paha bi\u00e7ilmez bir kolayl\u0131k sunar. S\u00fcrekli <code>git status<\/code> veya <code>git branch<\/code> komutlar\u0131n\u0131 yazma ihtiyac\u0131n\u0131 ortadan kald\u0131rarak hem zamandan tasarruf sa\u011flar hem de konsantrasyonunuzu art\u0131r\u0131r. Bu sayede, terminal ortam\u0131n\u0131z sadece bir komut sat\u0131r\u0131 aray\u00fcz\u00fc olmaktan \u00e7\u0131k\u0131p, anl\u0131k ve ba\u011flamsal bilgiler sunan ak\u0131ll\u0131 bir yard\u0131mc\u0131ya d\u00f6n\u00fc\u015f\u00fcr.<\/p>\n<h3>Bash Prompt&#8217;unuzu Anlamak: PS1 De\u011fi\u015fkeni<\/h3>\n<p>Bash terminalinde g\u00f6rd\u00fc\u011f\u00fcn\u00fcz prompt (komut istemi), <code>PS1<\/code> adl\u0131 \u00f6zel bir ortam de\u011fi\u015fkeni taraf\u0131ndan kontrol edilir. Bu de\u011fi\u015fken, terminalin her yeni sat\u0131rda size g\u00f6sterdi\u011fi metni ve bi\u00e7imlendirmeyi tan\u0131mlar. <code>PS1<\/code> de\u011fi\u015fkenini \u00f6zelle\u015ftirerek, prompt&#8217;unuzun g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc tamamen de\u011fi\u015ftirebilir ve i\u00e7ine dinamik bilgiler ekleyebilirsiniz.<\/p>\n<h4>PS1 Nedir ve Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h4>\n<p><code>PS1<\/code> (Prompt String 1), Bash&#8217;in bir komut istemeden \u00f6nce g\u00f6r\u00fcnt\u00fcledi\u011fi birincil prompt&#8217;u tan\u0131mlar. Genellikle kullan\u0131c\u0131n\u0131n ad\u0131, makine ad\u0131, mevcut \u00e7al\u0131\u015fma dizini ve bazen de tarih\/saat gibi bilgileri i\u00e7erir. Bu de\u011fi\u015fken, \u00f6zel ka\u00e7\u0131\u015f karakterleri (escape sequences) kullanarak renkler, kal\u0131n\/italik metinler ve dinamik bilgiler (\u00f6rne\u011fin, mevcut dizin) eklemenize olanak tan\u0131r.<\/p>\n<p>\u00d6rnek bir <code>PS1<\/code> de\u011feri:<\/p>\n<pre><code>\nPS1='\\[\\033[01;32m\\]\\u@\\h\\[\\033[00m\\]:\\[\\033[01;34m\\]\\w\\[\\033[00m\\]\\$ '\n<\/pre>\n<p><\/code><br \/>\nBu \u00f6rnekte, <code>\\u<\/code> kullan\u0131c\u0131 ad\u0131n\u0131, <code>\\h<\/code> hostname'i, <code>\\w<\/code> mevcut \u00e7al\u0131\u015fma dizinini ve <code>\\$<\/code> ise root kullan\u0131c\u0131s\u0131 olup olmad\u0131\u011f\u0131n\u0131za g\u00f6re <code>$<\/code> veya <code>#<\/code> i\u015faretini temsil eder. <code>\\[\\033[...m\\]<\/code> ise renk kodlar\u0131d\u0131r.<\/p>\n<h4>Temel Prompt Sembolleri<\/h4>\n<p><code>PS1<\/code> i\u00e7inde kullanabilece\u011finiz baz\u0131 yayg\u0131n ka\u00e7\u0131\u015f karakterleri ve anlamlar\u0131:<\/p>\n<table>\n<thead>\n<tr>\n<th>Sembol<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>\\u<\/code><\/td>\n<td>Ge\u00e7erli kullan\u0131c\u0131n\u0131n kullan\u0131c\u0131 ad\u0131<\/td>\n<\/tr>\n<tr>\n<td><code>\\h<\/code><\/td>\n<td>Hostname'in ilk k\u0131sm\u0131<\/td>\n<\/tr>\n<tr>\n<td><code>\\w<\/code><\/td>\n<td>Mevcut \u00e7al\u0131\u015fma dizini (ev dizini <code>~<\/code> ile k\u0131salt\u0131l\u0131r)<\/td>\n<\/tr>\n<tr>\n<td><code>\\W<\/code><\/td>\n<td>Mevcut \u00e7al\u0131\u015fma dizininin sadece son k\u0131sm\u0131<\/td>\n<\/tr>\n<tr>\n<td><code>\\$<\/code><\/td>\n<td>Root i\u00e7in <code>#<\/code>, di\u011fer kullan\u0131c\u0131lar i\u00e7in <code>$<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>\\t<\/code><\/td>\n<td>Ge\u00e7erli saat (HH:MM:SS)<\/td>\n<\/tr>\n<tr>\n<td><code>\\d<\/code><\/td>\n<td>Ge\u00e7erli tarih (Haftan\u0131n g\u00fcn\u00fc, ay, g\u00fcn)<\/td>\n<\/tr>\n<tr>\n<td><code>\\[...\\]<\/code><\/td>\n<td>G\u00f6r\u00fcnmeyen karakter dizilerini (renk kodlar\u0131 gibi) Bash'e bildirir, prompt uzunlu\u011funu do\u011fru hesaplamas\u0131n\u0131 sa\u011flar.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>Prompt'u Ge\u00e7ici Olarak De\u011fi\u015ftirme<\/h4>\n<p><code>PS1<\/code> de\u011fi\u015fkenini do\u011frudan terminalde ayarlayarak prompt'unuzu an\u0131nda de\u011fi\u015ftirebilirsiniz. Bu de\u011fi\u015fiklikler sadece mevcut oturum i\u00e7in ge\u00e7erli olacakt\u0131r.<\/p>\n<pre><code>\nPS1='Benim Promptum> '\n<\/pre>\n<p><\/code><br \/>\nBu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, prompt'unuz \"Benim Promptum>\" \u015feklinde de\u011fi\u015fecektir. Kal\u0131c\u0131 de\u011fi\u015fiklikler i\u00e7in <code>.bashrc<\/code> dosyas\u0131n\u0131 d\u00fczenlemeniz gerekir.<\/p>\n<h3>Git Bilgilerini Elde Etmek: Temel Komutlar<\/h3>\n<p>Git deposunun durumunu ve mevcut branch'ini \u00f6\u011frenmek i\u00e7in Bash betikleri i\u00e7inde kullanabilece\u011fimiz birka\u00e7 temel Git komutu bulunmaktad\u0131r. Bu komutlar\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 i\u015fleyerek prompt'umuza entegre edece\u011fiz.<\/p>\n<h4>Mevcut Branch Ad\u0131n\u0131 Bulma<\/h4>\n<p>Bir Git deposunun mevcut branch ad\u0131n\u0131 almak i\u00e7in en yayg\u0131n ve g\u00fcvenilir y\u00f6ntem <code>git rev-parse --abbrev-ref HEAD<\/code> komutudur. Bu komut, HEAD'in i\u015faret etti\u011fi branch'in k\u0131sa ad\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code>\ngit rev-parse --abbrev-ref HEAD\n<\/pre>\n<p><\/code><br \/>\nE\u011fer bir Git deposunda de\u011filseniz veya HEAD detached durumdaysa farkl\u0131 \u00e7\u0131kt\u0131lar verebilir, bu y\u00fczden beti\u011fimizde bu durumlar\u0131 da kontrol etmemiz gerekecek.<\/p>\n<h4>\u00c7al\u0131\u015fma Dizinindeki De\u011fi\u015fiklikleri Kontrol Etme (Dirty\/Clean Status)<\/h4>\n<p>Bir Git deposunun \"kirli\" (dirty) olup olmad\u0131\u011f\u0131n\u0131, yani commit edilmemi\u015f de\u011fi\u015fiklikler i\u00e7erip i\u00e7ermedi\u011fini anlamak i\u00e7in <code>git status --porcelain<\/code> komutunu kullan\u0131r\u0131z. Bu komut, makine taraf\u0131ndan okunabilir bir formatta \u00e7\u0131kt\u0131 verir.<\/p>\n<pre><code>\ngit status --porcelain\n<\/pre>\n<p><\/code><br \/>\nE\u011fer \u00e7\u0131kt\u0131 bo\u015fsa, \u00e7al\u0131\u015fma dizini temizdir. E\u011fer \u00e7\u0131kt\u0131 varsa, de\u011fi\u015fiklikler mevcuttur (modified, staged, untracked vb.). Bu \u00e7\u0131kt\u0131n\u0131n varl\u0131\u011f\u0131n\u0131 kontrol ederek prompt'umuza bir \"kirli\" g\u00f6stergesi ekleyebiliriz.<\/p>\n<h4>Uzak Depo Durumunu Anlama (Upstream)<\/h4>\n<p>Mevcut branch'in uzak depodaki kar\u015f\u0131l\u0131\u011f\u0131na g\u00f6re ne durumda oldu\u011funu (ileride mi, geride mi, yoksa senkronize mi) anlamak, \u00f6zellikle ekip \u00e7al\u0131\u015fmas\u0131nda \u00f6nemlidir. <code>git rev-parse --abbrev-ref --symbolic-full-name @{u}<\/code> komutu ile uzak branch ad\u0131n\u0131 alabilir, ard\u0131ndan <code>git rev-list --count<\/code> komutlar\u0131 ile commit farklar\u0131n\u0131 sayabiliriz. Ancak bu biraz karma\u015f\u0131k olabilir. Daha basit bir yakla\u015f\u0131m, <code>git status -sb<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 incelemektir. Bu \u00e7\u0131kt\u0131, <code>[ahead N]<\/code>, <code>[behind N]<\/code> veya <code>[ahead N, behind M]<\/code> gibi ifadeler i\u00e7erebilir.<\/p>\n<h3>Basit Bir Git Prompt Fonksiyonu Olu\u015fturma<\/h3>\n<p>Git bilgilerini prompt'umuza entegre etmek i\u00e7in, bu bilgileri d\u00f6nd\u00fcren bir Bash fonksiyonu olu\u015fturup <code>PS1<\/code> de\u011fi\u015fkenimizin i\u00e7inde \u00e7a\u011f\u0131raca\u011f\u0131z. Bu fonksiyon, bir Git deposu i\u00e7inde olup olmad\u0131\u011f\u0131m\u0131z\u0131 kontrol edecek ve duruma g\u00f6re branch ad\u0131n\u0131 veya di\u011fer bilgileri d\u00f6nd\u00fcrecektir.<\/p>\n<h4>Temel Fonksiyon Yap\u0131s\u0131<\/h4>\n<p>\u00d6ncelikle, Git deposu i\u00e7inde olup olmad\u0131\u011f\u0131m\u0131z\u0131 kontrol eden bir fonksiyon tasla\u011f\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code>\nfunction parse_git_branch {\n  git rev-parse --is-inside-work-tree &>\/dev\/null\n  if [ $? -eq 0 ]; then\n    # Git deposu i\u00e7indeyiz, branch ad\u0131n\u0131 alal\u0131m\n    echo \"($(git rev-parse --abbrev-ref HEAD))\"\n  else\n    # Git deposu i\u00e7inde de\u011filiz\n    echo \"\"\n  fi\n}\n<\/pre>\n<p><\/code><br \/>\nBu fonksiyon, <code>git rev-parse --is-inside-work-tree<\/code> komutunun \u00e7\u0131k\u0131\u015f kodunu kontrol ederek bir Git deposu i\u00e7inde olup olmad\u0131\u011f\u0131m\u0131z\u0131 anlar. <code>$?<\/code> de\u011fi\u015fkeni, son \u00e7al\u0131\u015ft\u0131r\u0131lan komutun \u00e7\u0131k\u0131\u015f kodunu tutar (0 ba\u015far\u0131, di\u011fer de\u011ferler hata).<\/p>\n<h4>Branch Ad\u0131n\u0131 Prompt'a Ekleme<\/h4>\n<p>\u015eimdi bu fonksiyonu <code>PS1<\/code> de\u011fi\u015fkenimize entegre edelim. <code>.bashrc<\/code> dosyan\u0131za a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin:<\/p>\n<pre><code>\n# .bashrc dosyan\u0131za ekleyin\n\n# Git branch fonksiyonu\nfunction parse_git_branch {\n  git rev-parse --is-inside-work-tree &>\/dev\/null\n  if [ $? -eq 0 ]; then\n    echo \"($(git rev-parse --abbrev-ref HEAD))\"\n  else\n    echo \"\"\n  fi\n}\n\n# PS1 de\u011fi\u015fkenini \u00f6zelle\u015ftirme\n# Mevcut PS1'inizi yedeklemek iyi bir fikirdir.\n# export PS1_ORIGINAL=\"$PS1\"\n\nexport PS1='\\[\\033[01;32m\\]\\u@\\h\\[\\033[00m\\]:\\[\\033[01;34m\\]\\w\\[\\033[00m\\]$(parse_git_branch)\\[\\033[00m\\]\\$ '\n<\/pre>\n<p><\/code><br \/>\nBu <code>PS1<\/code> tan\u0131m\u0131, kullan\u0131c\u0131 ad\u0131, hostname ve mevcut dizinden sonra <code>parse_git_branch<\/code> fonksiyonunun \u00e7\u0131kt\u0131s\u0131n\u0131 ekler. B\u00f6ylece, bir Git deposu i\u00e7indeyseniz branch ad\u0131n\u0131 parantez i\u00e7inde g\u00f6receksiniz.<\/p>\n<h4>.bashrc Dosyas\u0131na Entegrasyon<\/h4>\n<p>Yukar\u0131daki kod par\u00e7ac\u0131klar\u0131n\u0131 <code>.bashrc<\/code> dosyan\u0131za (genellikle ev dizininizde <code>\/home\/kullanici_adiniz\/.bashrc<\/code>) eklemeniz ve de\u011fi\u015fiklikleri kaydetmeniz gerekir. De\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in terminali yeniden ba\u015flatabilir veya a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code>\nsource ~\/.bashrc\n<\/pre>\n<p><\/code><br \/>\nArt\u0131k bir Git deposu dizinine girdi\u011finizde, prompt'unuzda mevcut branch ad\u0131n\u0131 g\u00f6receksiniz.<\/p>\n<h3>Geli\u015fmi\u015f \u00d6zellikler ve Renklendirme<\/h3>\n<p>Sadece branch ad\u0131n\u0131 g\u00f6rmek yeterli olmayabilir. Deponun \"kirli\" olup olmad\u0131\u011f\u0131n\u0131, yani \u00fczerinde commit edilmemi\u015f de\u011fi\u015fiklikler olup olmad\u0131\u011f\u0131n\u0131 veya uzak depoyla senkronizasyon durumunu da prompt'umuza ekleyebiliriz. Ayr\u0131ca, bu bilgileri renklerle vurgulamak, okunabilirli\u011fi ve an\u0131nda fark\u0131ndal\u0131\u011f\u0131 art\u0131racakt\u0131r.<\/p>\n<h4>Durum Bilgilerini Renklerle Vurgulama<\/h4>\n<p>Prompt'unuzda renk kullanmak, bilgileri daha h\u0131zl\u0131 i\u015flemenize yard\u0131mc\u0131 olur. \u00d6rne\u011fin, temiz bir depo i\u00e7in ye\u015fil, kirli bir depo i\u00e7in sar\u0131 veya k\u0131rm\u0131z\u0131 renk kullanabiliriz. Renk kodlar\u0131 <code>\\[\\033[XXm\\]<\/code> format\u0131ndad\u0131r.<\/p>\n<p>Yayg\u0131n renk kodlar\u0131:<br \/>\n*   <code>30<\/code>: Siyah<br \/>\n*   <code>31<\/code>: K\u0131rm\u0131z\u0131<br \/>\n*   <code>32<\/code>: Ye\u015fil<br \/>\n*   <code>33<\/code>: Sar\u0131<br \/>\n*   <code>34<\/code>: Mavi<br \/>\n*   <code>35<\/code>: Magenta<br \/>\n*   <code>36<\/code>: Cyan<br \/>\n*   <code>37<\/code>: Beyaz<br \/>\n*   <code>0m<\/code>: Renkleri s\u0131f\u0131rla (\u00f6nemli!)<br \/>\n*   <code>01<\/code>: Kal\u0131n (bold)<\/p>\n<p>\u015eimdi <code>parse_git_branch<\/code> fonksiyonumuzu geni\u015fleterek Git durumunu da ekleyelim ve renklendirelim:<\/p>\n<pre><code>\nfunction parse_git_prompt {\n  git rev-parse --is-inside-work-tree &>\/dev\/null || return # Git deposu de\u011filse \u00e7\u0131k\n\n  local git_branch\n  git_branch=$(git rev-parse --abbrev-ref HEAD)\n\n  local git_status_output\n  git_status_output=$(git status --porcelain 2>\/dev\/null)\n\n  local status_symbol=\"\"\n  local status_color=\"\"\n\n  if [[ -n \"$git_status_output\" ]]; then\n    status_symbol=\"*\" # Kirli depo\n    status_color=\"\\[\\033[01;33m\\]\" # Sar\u0131 renk\n  else\n    status_symbol=\"\" # Temiz depo\n    status_color=\"\\[\\033[01;32m\\]\" # Ye\u015fil renk\n  fi\n\n  echo -e \"${status_color}(${git_branch}${status_symbol})\\[\\033[00m\\]\"\n}\n\nexport PS1='\\[\\033[01;32m\\]\\u@\\h\\[\\033[00m\\]:\\[\\033[01;34m\\]\\w\\[\\033[00m\\]$(parse_git_prompt)\\[\\033[00m\\]\\$ '\n<\/pre>\n<p><\/code><br \/>\nBu geli\u015ftirilmi\u015f fonksiyon, Git deposunun durumuna g\u00f6re <code>*<\/code> sembol\u00fc ve farkl\u0131 renkler kullanarak branch ad\u0131n\u0131 g\u00f6sterir.<\/p>\n<h4>De\u011fi\u015fiklik Durumunu G\u00f6sterme (Modified, Staged, Untracked)<\/h4>\n<p>Daha da detayl\u0131 bilgi i\u00e7in, <code>git status --porcelain<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 ayr\u0131\u015ft\u0131rarak hangi t\u00fcr de\u011fi\u015fikliklerin oldu\u011funu da g\u00f6sterebiliriz. \u00d6rne\u011fin, de\u011fi\u015ftirilmi\u015f dosyalar i\u00e7in <code>M<\/code>, stage'lenmi\u015f dosyalar i\u00e7in <code>S<\/code>, takip edilmeyen dosyalar i\u00e7in <code>?<\/code> gibi semboller kullanabiliriz. Bu biraz daha karma\u015f\u0131k bir parsing gerektirir.<\/p>\n<p>\u00d6rnek olarak, sadece takip edilmeyen dosyalar varsa <code>?<\/code> sembol\u00fc ekleyelim:<\/p>\n<pre><code>\nfunction parse_git_prompt {\n  git rev-parse --is-inside-work-tree &>\/dev\/null || return\n\n  local git_branch\n  git_branch=$(git rev-parse --abbrev-ref HEAD)\n\n  local git_status_output\n  git_status_output=$(git status --porcelain 2>\/dev\/null)\n\n  local status_symbol=\"\"\n  local status_color=\"\"\n  local untracked_symbol=\"\"\n\n  if [[ -n \"$git_status_output\" ]]; then\n    status_symbol=\"*\" # Kirli depo\n    status_color=\"\\[\\033[01;33m\\]\" # Sar\u0131\n\n    # Takip edilmeyen dosyalar var m\u0131 kontrol et\n    if grep -q \"^??\" <<< \"$git_status_output\"; then\n      untracked_symbol=\"?\"\n    fi\n  else\n    status_color=\"\\[\\033[01;32m\\]\" # Ye\u015fil\n  fi\n\n  echo -e \"${status_color}(${git_branch}${status_symbol}${untracked_symbol})\\[\\033[00m\\]\"\n}\n<\/pre>\n<p><\/code><\/p>\n<h4>Uzak Depo Takibi ve Ok \u0130\u015faretleri<\/h4>\n<p>Bir branch'in uzak depodaki kar\u015f\u0131l\u0131\u011f\u0131na g\u00f6re ileride mi yoksa geride mi oldu\u011funu g\u00f6stermek i\u00e7in <code>git status -sb<\/code> \u00e7\u0131kt\u0131s\u0131ndan faydalanabiliriz. Bu \u00e7\u0131kt\u0131daki <code>[ahead N]<\/code> veya <code>[behind N]<\/code> ifadelerini yakalayarak prompt'umuza ok i\u015faretleri ekleyebiliriz.<\/p>\n<pre><code>\nfunction parse_git_prompt {\n  git rev-parse --is-inside-work-tree &>\/dev\/null || return\n\n  local git_branch\n  git_branch=$(git rev-parse --abbrev-ref HEAD)\n\n  local git_status_output\n  git_status_output=$(git status --porcelain 2>\/dev\/null)\n\n  local status_symbol=\"\"\n  local status_color=\"\"\n  local untracked_symbol=\"\"\n  local ahead_behind=\"\"\n\n  # Git status -sb \u00e7\u0131kt\u0131s\u0131 ile upstream durumunu kontrol et\n  local git_status_sb_output\n  git_status_sb_output=$(git status -sb 2>\/dev\/null)\n\n  if [[ \"$git_status_sb_output\" =~ \\[ahead\\ ([0-9]+)\\] ]]; then\n    ahead_behind=\"${BASH_REMATCH[1]}\u2191\" # N commit ileride\n  fi\n  if [[ \"$git_status_sb_output\" =~ \\[behind\\ ([0-9]+)\\] ]]; then\n    ahead_behind=\"${BASH_REMATCH[1]}\u2193\" # N commit geride\n  fi\n  if [[ \"$git_status_sb_output\" =~ \\[ahead\\ ([0-9]+),\\ behind\\ ([0-9]+)\\] ]]; then\n    ahead_behind=\"${BASH_REMATCH[1]}\u2191${BASH_REMATCH[2]}\u2193\" # N ileride, M geride\n  fi\n\n  if [[ -n \"$git_status_output\" ]]; then\n    status_symbol=\"*\" # Kirli depo\n    status_color=\"\\[\\033[01;33m\\]\" # Sar\u0131\n    if grep -q \"^??\" <<< \"$git_status_output\"; then\n      untracked_symbol=\"?\"\n    fi\n  else\n    status_color=\"\\[\\033[01;32m\\]\" # Ye\u015fil\n  fi\n\n  echo -e \"${status_color}(${git_branch}${status_symbol}${untracked_symbol}${ahead_behind})\\[\\033[00m\\]\"\n}\n<\/pre>\n<p><\/code><br \/>\nBu fonksiyon, branch ad\u0131n\u0131, kirli\/temiz durumunu, takip edilmeyen dosyalar\u0131 ve uzak depo ile senkronizasyon durumunu tek bir kompakt g\u00f6stergede birle\u015ftirir.<\/p>\n<h3>Performans ve En \u0130yi Uygulamalar<\/h3>\n<p>Bash prompt'unuza Git bilgileri eklemek harika olsa da, her komut \u00e7al\u0131\u015ft\u0131\u011f\u0131nda Git komutlar\u0131n\u0131n tekrar tekrar \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 prompt'ta g\u00f6zle g\u00f6r\u00fcl\u00fcr bir gecikmeye neden olabilir. Bu, \u00f6zellikle b\u00fcy\u00fck depolarla \u00e7al\u0131\u015f\u0131rken veya yava\u015f sistemlerde can s\u0131k\u0131c\u0131 olabilir. Performans\u0131 optimize etmek i\u00e7in baz\u0131 stratejiler mevcuttur.<\/p>\n<h4>Prompt Gecikmesini Azaltma<\/h4>\n<p>*   <strong>Minimum Komut \u00c7a\u011fr\u0131s\u0131:<\/strong> Git komutlar\u0131n\u0131 m\u00fcmk\u00fcn oldu\u011funca az \u00e7a\u011f\u0131r\u0131n. \u00d6rne\u011fin, <code>git status<\/code> yerine <code>git status --porcelain<\/code> kullanmak daha h\u0131zl\u0131 olabilir \u00e7\u00fcnk\u00fc daha az \u00e7\u0131kt\u0131 \u00fcretir.<br \/>\n*   <strong>\u00d6nbellekleme:<\/strong> Baz\u0131 geli\u015fmi\u015f prompt \u00e7\u00f6z\u00fcmleri, Git durumunu belirli aral\u0131klarla \u00f6nbelle\u011fe alarak her prompt \u00e7a\u011fr\u0131s\u0131nda yeniden hesaplamay\u0131 \u00f6nler. Ancak bu, saf Bash betikleriyle uygulamas\u0131 karma\u015f\u0131k olabilir.<br \/>\n*   <strong>Ko\u015fullu \u00c7al\u0131\u015ft\u0131rma:<\/strong> Sadece bir Git deposu i\u00e7indeyseniz Git komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n. Fonksiyonumuzdaki <code>git rev-parse --is-inside-work-tree || return<\/code> bu amaca hizmet eder.<br \/>\n*   <strong>Hafif Komutlar:<\/strong> <code>git rev-parse<\/code> gibi hafif komutlar\u0131 tercih edin. <code>git log<\/code> gibi daha a\u011f\u0131r komutlardan ka\u00e7\u0131n\u0131n.<\/p>\n<h4>Haz\u0131r \u00c7\u00f6z\u00fcmlerden Faydalanma (git-prompt.sh)<\/h4>\n<p>Git'in kendisi, prompt'unuza Git bilgilerini eklemek i\u00e7in kullanabilece\u011finiz <code>git-prompt.sh<\/code> adl\u0131 bir betik sunar. Bu betik, genellikle Git kurulumunuzla birlikte gelir ve olduk\u00e7a optimize edilmi\u015ftir.<br \/>\nBu beti\u011fi <code>.bashrc<\/code> dosyan\u0131za kaynak olarak ekleyebilir ve ard\u0131ndan <code>PS1<\/code> de\u011fi\u015fkeninizi <code>__git_ps1<\/code> fonksiyonunu kullanarak \u00f6zelle\u015ftirebilirsiniz.<\/p>\n<p>\u00d6rnek <code>.bashrc<\/code> entegrasyonu:<\/p>\n<pre><code>\n# Git'in kendi prompt beti\u011fini kaynak olarak ekle\n# Genellikle \/usr\/share\/git\/completion\/git-prompt.sh veya benzer bir yolda bulunur.\n# Kendi sisteminizdeki yolu kontrol edin.\nif [ -f \/usr\/share\/git\/completion\/git-prompt.sh ]; then\n  . \/usr\/share\/git\/completion\/git-prompt.sh\nfi\n\n# PS1'i __git_ps1 fonksiyonunu kullanarak ayarla\n# \\[\\e[32m\\]: Ye\u015fil renk\n# \\[\\e[33m\\]: Sar\u0131 renk\n# \\w: Mevcut dizin\n# %s: __git_ps1 taraf\u0131ndan sa\u011flanan Git bilgisi\nexport PS1='\\[\\e[32m\\]\\u@\\h\\[\\e[0m\\]:\\[\\e[33m\\]\\w$(__git_ps1 \" (%s)\")\\[\\e[0m\\]\\$ '\n<\/pre>\n<p><\/code><br \/>\n<code>__git_ps1<\/code> fonksiyonu, Git deposunun durumuna g\u00f6re otomatik olarak branch ad\u0131n\u0131, kirli\/temiz durumunu ve uzak depo takibini g\u00f6sterir. Bu, genellikle kendi yazd\u0131\u011f\u0131n\u0131z betiklerden daha performansl\u0131 ve kapsaml\u0131 bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/p>\n<h4>Kendi \u00c7\u00f6z\u00fcm\u00fcn\u00fcz\u00fc Optimize Etme<\/h4>\n<p>E\u011fer kendi \u00e7\u00f6z\u00fcm\u00fcn\u00fcz\u00fc kullanmay\u0131 tercih ediyorsan\u0131z:<br \/>\n*   <strong>Minimalist Yakla\u015f\u0131m:<\/strong> Sadece en temel bilgileri (branch ad\u0131, kirli\/temiz) g\u00f6sterin. Her detay\u0131 prompt'a t\u0131k\u0131\u015ft\u0131rmak hem performans\u0131 d\u00fc\u015f\u00fcr\u00fcr hem de prompt'u okunmaz hale getirebilir.<br \/>\n*   <strong>Hata Y\u00f6netimi:<\/strong> Git komutlar\u0131n\u0131n hata vermesi durumunda prompt'unuzun bozulmamas\u0131n\u0131 sa\u011flay\u0131n. <code>&>\/dev\/null<\/code> ile \u00e7\u0131kt\u0131lar\u0131 susturmak ve \u00e7\u0131k\u0131\u015f kodlar\u0131n\u0131 kontrol etmek \u00f6nemlidir.<br \/>\n*   <strong>Test Edin:<\/strong> De\u011fi\u015fiklikleri yapt\u0131ktan sonra farkl\u0131 Git depolar\u0131nda ve farkl\u0131 durum senaryolar\u0131nda (temiz, kirli, branch de\u011fi\u015ftirme vb.) prompt'unuzu test edin.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bash prompt'unuzu Git bilgileriyle \u00f6zelle\u015ftirmek, geli\u015ftirme ortam\u0131n\u0131z\u0131n verimlili\u011fini ve kullan\u0131m kolayl\u0131\u011f\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131ran basit ama etkili bir ad\u0131md\u0131r. \u0130ster kendi basit fonksiyonunuzu yazarak ba\u015flay\u0131n, ister Git'in sundu\u011fu <code>git-prompt.sh<\/code> gibi haz\u0131r \u00e7\u00f6z\u00fcmleri kullan\u0131n, terminalinizde anl\u0131k ba\u011flamsal bilgiye sahip olmak, hatalar\u0131 azalt\u0131r ve i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 h\u0131zland\u0131r\u0131r. Bu makalede sunulan y\u00f6ntemler ve ipu\u00e7lar\u0131 sayesinde, kendi ihtiya\u00e7lar\u0131n\u0131za en uygun Git entegrasyonunu olu\u015fturabilir ve geli\u015ftirme deneyiminizi bir \u00fcst seviyeye ta\u015f\u0131yabilirsiniz. Unutmay\u0131n, iyi yap\u0131land\u0131r\u0131lm\u0131\u015f bir prompt, daha ak\u0131ll\u0131 ve daha az stresli bir geli\u015ftirme s\u00fcreci demektir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><strong>1. Yapt\u0131\u011f\u0131m de\u011fi\u015fiklikler neden kal\u0131c\u0131 olmuyor?<\/strong><br \/>\nTerminalde do\u011frudan <code>PS1<\/code> de\u011fi\u015fkenini ayarlad\u0131\u011f\u0131n\u0131zda, bu de\u011fi\u015fiklikler sadece mevcut oturum i\u00e7in ge\u00e7erlidir. De\u011fi\u015fikliklerin kal\u0131c\u0131 olmas\u0131 i\u00e7in, onlar\u0131 <code>.bashrc<\/code> (Bash i\u00e7in) veya <code>.zshrc<\/code> (Zsh i\u00e7in) gibi kabuk yap\u0131land\u0131rma dosyan\u0131za eklemeniz ve bu dosyay\u0131 her oturum ba\u015flang\u0131c\u0131nda kaynak olarak y\u00fcklemeniz gerekir.<\/p>\n<p><strong>2. <code>parse_git_prompt<\/code> fonksiyonum neden Git deposu d\u0131\u015f\u0131nda da \u00e7al\u0131\u015f\u0131yor?<\/strong><br \/>\nFonksiyonunuzun ba\u015f\u0131nda <code>git rev-parse --is-inside-work-tree &>\/dev\/null || return<\/code> kontrol\u00fcn\u00fc do\u011fru bir \u015fekilde ekledi\u011finizden emin olun. Bu sat\u0131r, e\u011fer mevcut dizin bir Git deposu i\u00e7inde de\u011filse fonksiyonun hemen \u00e7\u0131kmas\u0131n\u0131 sa\u011flar.<\/p>\n<p><strong>3. Prompt'umdaki Git bilgileri \u00e7ok yava\u015f g\u00f6r\u00fcn\u00fcyor, ne yapabilirim?<\/strong><br \/>\nBu genellikle Git komutlar\u0131n\u0131n her prompt \u00e7a\u011fr\u0131s\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131ndan kaynaklan\u0131r. <code>git-prompt.sh<\/code> gibi optimize edilmi\u015f haz\u0131r \u00e7\u00f6z\u00fcmleri kullanmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz. Kendi \u00e7\u00f6z\u00fcm\u00fcn\u00fczde ise, sadece en gerekli bilgileri g\u00f6stermeye odaklan\u0131n ve Git komutlar\u0131n\u0131 m\u00fcmk\u00fcn oldu\u011funca az ve h\u0131zl\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n. <code>git status<\/code> yerine <code>git status --porcelain<\/code> gibi daha h\u0131zl\u0131 \u00e7\u0131kt\u0131lar veren komutlar\u0131 tercih edin.<\/p>\n<p><strong>4. Renk kodlar\u0131 prompt'umda garip karakterler olarak g\u00f6r\u00fcn\u00fcyor, neden?<\/strong><br \/>\nBu genellikle renk kodlar\u0131n\u0131 <code>\\[...\\]<\/code> i\u00e7ine almay\u0131 unutman\u0131zdan kaynaklan\u0131r. Bash, bu ka\u00e7\u0131\u015f dizilerini g\u00f6r\u00fcnmez karakterler olarak alg\u0131lamal\u0131d\u0131r, aksi takdirde prompt uzunlu\u011funu yanl\u0131\u015f hesaplar ve imleciniz yanl\u0131\u015f yerlerde g\u00f6r\u00fcn\u00fcr. \u00d6rne\u011fin, <code>\\[\\033[01;32m\\]<\/code> \u015feklinde kullan\u0131ld\u0131\u011f\u0131ndan emin olun.<\/p>\n<p><strong>5. Zsh kullan\u0131yorum, bu y\u00f6ntemler Zsh i\u00e7in de ge\u00e7erli mi?<\/strong><br \/>\nBu makaledeki temel prensipler (Git komutlar\u0131 ve durum bilgisi alma) Zsh i\u00e7in de ge\u00e7erlidir. Ancak, Zsh'in prompt \u00f6zelle\u015ftirme mekanizmalar\u0131 Bash'ten biraz farkl\u0131d\u0131r. Zsh i\u00e7in <code>PROMPT<\/code> de\u011fi\u015fkeni ve <code>precmd<\/code> kancas\u0131 kullan\u0131l\u0131r. Oh My Zsh gibi \u00e7er\u00e7eveler, Zsh prompt'unuzu Git bilgileriyle \u00f6zelle\u015ftirmek i\u00e7in \u00e7ok daha kolay ve g\u00fc\u00e7l\u00fc y\u00f6ntemler sunar.<\/p>\n","protected":false},"excerpt":{"rendered":"Bash Prompt&#8217;unuzda Git Branch ve Durumunu G\u00f6sterme: Verimli Geli\u015ftirici Ortam\u0131 \u0130\u00e7in Kapsaml\u0131 K\u0131lavuz\nBir yaz\u0131l\u0131m geli\u015ftiricisi olarak terminalde g&#8230;","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":[1328],"tags":[],"class_list":{"0":"post-36742","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-bash","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>Bash Prompt&#039;unuzda Git Branch ve Durumunu G\u00f6sterme: Verimli Geli\u015ftirici Ortam\u0131 \u0130\u00e7in Kapsaml\u0131 K\u0131lavuz - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\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\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bash Prompt&#039;unuzda Git Branch ve Durumunu G\u00f6sterme: Verimli Geli\u015ftirici Ortam\u0131 \u0130\u00e7in Kapsaml\u0131 K\u0131lavuz\" \/>\n<meta property=\"og:description\" content=\"Bash Prompt&#039;unuzda Git Branch ve Durumunu G\u00f6sterme: Verimli Geli\u015ftirici Ortam\u0131 \u0130\u00e7in Kapsaml\u0131 K\u0131lavuz Bir yaz\u0131l\u0131m geli\u015ftiricisi olarak terminalde g...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-22T09:30:43+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=\"10 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Bash Prompt&#8217;unuzda Git Branch ve Durumunu G\u00f6sterme: Verimli Geli\u015ftirici Ortam\u0131 \u0130\u00e7in Kapsaml\u0131 K\u0131lavuz\",\"datePublished\":\"2025-12-22T09:30:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/\"},\"wordCount\":2190,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Bash\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/\",\"name\":\"Bash Prompt'unuzda Git Branch ve Durumunu G\u00f6sterme: Verimli Geli\u015ftirici Ortam\u0131 \u0130\u00e7in Kapsaml\u0131 K\u0131lavuz - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-22T09:30:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bash Prompt&#8217;unuzda Git Branch ve Durumunu G\u00f6sterme: Verimli Geli\u015ftirici Ortam\u0131 \u0130\u00e7in Kapsaml\u0131 K\u0131lavuz\"}]},{\"@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":"Bash Prompt'unuzda Git Branch ve Durumunu G\u00f6sterme: Verimli Geli\u015ftirici Ortam\u0131 \u0130\u00e7in Kapsaml\u0131 K\u0131lavuz - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","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\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/","og_locale":"tr_TR","og_type":"article","og_title":"Bash Prompt'unuzda Git Branch ve Durumunu G\u00f6sterme: Verimli Geli\u015ftirici Ortam\u0131 \u0130\u00e7in Kapsaml\u0131 K\u0131lavuz","og_description":"Bash Prompt'unuzda Git Branch ve Durumunu G\u00f6sterme: Verimli Geli\u015ftirici Ortam\u0131 \u0130\u00e7in Kapsaml\u0131 K\u0131lavuz Bir yaz\u0131l\u0131m geli\u015ftiricisi olarak terminalde g...","og_url":"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-22T09:30:43+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"10 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Bash Prompt&#8217;unuzda Git Branch ve Durumunu G\u00f6sterme: Verimli Geli\u015ftirici Ortam\u0131 \u0130\u00e7in Kapsaml\u0131 K\u0131lavuz","datePublished":"2025-12-22T09:30:43+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/"},"wordCount":2190,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Bash"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/","url":"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/","name":"Bash Prompt'unuzda Git Branch ve Durumunu G\u00f6sterme: Verimli Geli\u015ftirici Ortam\u0131 \u0130\u00e7in Kapsaml\u0131 K\u0131lavuz - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-22T09:30:43+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/bash-promptunuzda-git-branch-ve-durumunu-gosterme-verimli-gelistirici-ortami-icin-kapsamli-kilavuz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Bash Prompt&#8217;unuzda Git Branch ve Durumunu G\u00f6sterme: Verimli Geli\u015ftirici Ortam\u0131 \u0130\u00e7in Kapsaml\u0131 K\u0131lavuz"}]},{"@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\/36742","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=36742"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36742\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36742"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}