{"id":34676,"date":"2025-11-20T16:41:25","date_gmt":"2025-11-20T13:41:25","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=34676"},"modified":"2025-11-20T16:41:25","modified_gmt":"2025-11-20T13:41:25","slug":"git-nasil-kullanilir-kapsamli-bir-referans-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/","title":{"rendered":"Git Nas\u0131l Kullan\u0131l\u0131r: Kapsaml\u0131 Bir Referans Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>Git Nas\u0131l Kullan\u0131l\u0131r: Kapsaml\u0131 Bir Referans Rehberi<\/h2>\n<h2>Giri\u015f: S\u00fcr\u00fcm Kontrol Sistemleri ve Git<\/h2>\n<p>Yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, projeler genellikle birden fazla ki\u015fi taraf\u0131ndan ortakla\u015fa y\u00fcr\u00fct\u00fcl\u00fcr ve zaman i\u00e7inde say\u0131s\u0131z de\u011fi\u015fiklikten ge\u00e7er. Bu karma\u015f\u0131k s\u00fcre\u00e7te, yap\u0131lan her de\u011fi\u015fikli\u011fi takip etmek, farkl\u0131 s\u00fcr\u00fcmleri y\u00f6netmek, hatalar\u0131 geri almak ve ekip \u00fcyeleri aras\u0131nda koordinasyonu sa\u011flamak hayati \u00f6nem ta\u015f\u0131r. \u0130\u015fte tam bu noktada S\u00fcr\u00fcm Kontrol Sistemleri (Version Control Systems &#8211; VCS) devreye girer. VCS&#8217;ler, bir projenin t\u00fcm ge\u00e7mi\u015fini kaydetmenize, belirli bir noktadaki durumuna geri d\u00f6nmenize, farkl\u0131 \u00f6zellikler \u00fczerinde e\u015f zamanl\u0131 \u00e7al\u0131\u015fman\u0131za ve ekip \u00fcyelerinin katk\u0131lar\u0131n\u0131 sorunsuz bir \u015fekilde birle\u015ftirmenize olanak tan\u0131r.<\/p>\n<h3>S\u00fcr\u00fcm Kontrol Sistemleri Nedir?<\/h3>\n<p>S\u00fcr\u00fcm kontrol sistemleri, dosyalar\u0131n ve dizinlerin zaman i\u00e7indeki de\u011fi\u015fikliklerini y\u00f6neten yaz\u0131l\u0131mlard\u0131r. Temelde, projenizin her bir s\u00fcr\u00fcm\u00fcn\u00fc bir anl\u0131k g\u00f6r\u00fcnt\u00fc (snapshot) olarak kaydederler. Bu anl\u0131k g\u00f6r\u00fcnt\u00fcler sayesinde, projenizin herhangi bir \u00f6nceki durumuna kolayca geri d\u00f6nebilir, kimin ne zaman hangi de\u011fi\u015fikli\u011fi yapt\u0131\u011f\u0131n\u0131 g\u00f6rebilir ve farkl\u0131 geli\u015ftirme yollar\u0131n\u0131 (dallar\u0131) izleyebilirsiniz. Merkezi (CVCS) ve Da\u011f\u0131t\u0131k (DVCS) olmak \u00fczere iki ana kategoriye ayr\u0131l\u0131rlar. SVN ve CVS merkezi sistemlere \u00f6rnekken, Git da\u011f\u0131t\u0131k bir sistemdir. Da\u011f\u0131t\u0131k sistemlerde, projenin t\u00fcm ge\u00e7mi\u015fi her geli\u015ftiricinin yerel makinesinde bulunur, bu da daha fazla esneklik ve \u00e7evrimd\u0131\u015f\u0131 \u00e7al\u0131\u015fma yetene\u011fi sa\u011flar.<\/p>\n<h3>Git Neden Bu Kadar Pop\u00fcler?<\/h3>\n<p>Git, Linus Torvalds taraf\u0131ndan 2005 y\u0131l\u0131nda Linux \u00e7ekirde\u011finin geli\u015ftirilmesi i\u00e7in tasarlanm\u0131\u015f da\u011f\u0131t\u0131k bir s\u00fcr\u00fcm kontrol sistemidir. K\u0131sa s\u00fcrede t\u00fcm d\u00fcnyada en yayg\u0131n kullan\u0131lan VCS haline gelmesinin bir\u00e7ok nedeni vard\u0131r:<\/p>\n<p>*   <strong>H\u0131z:<\/strong> Git, di\u011fer VCS&#8217;lere g\u00f6re inan\u0131lmaz derecede h\u0131zl\u0131d\u0131r. \u00c7o\u011fu i\u015flem yerel olarak ger\u00e7ekle\u015ftirilir, bu da a\u011f gecikmelerini ortadan kald\u0131r\u0131r.<br \/>\n*   <strong>Da\u011f\u0131t\u0131k Yap\u0131:<\/strong> Her geli\u015ftiricinin projenin tam bir kopyas\u0131na sahip olmas\u0131, merkezi bir sunucuya ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 ortadan kald\u0131r\u0131r ve \u00e7evrimd\u0131\u015f\u0131 \u00e7al\u0131\u015fmay\u0131 m\u00fcmk\u00fcn k\u0131lar. Ayr\u0131ca, merkezi sunucunun \u00e7\u00f6kmesi durumunda veri kayb\u0131 riskini azalt\u0131r.<br \/>\n*   <strong>Dallanma ve Birle\u015ftirme (Branching &#038; Merging):<\/strong> Git&#8217;in dallanma modeli olduk\u00e7a hafif ve esnektir. Yeni \u00f6zellikler veya hata d\u00fczeltmeleri \u00fczerinde izole bir \u015fekilde \u00e7al\u0131\u015fmak, ard\u0131ndan bu de\u011fi\u015fiklikleri ana projeye kolayca birle\u015ftirmek \u00e7ok basittir.<br \/>\n*   <strong>Veri B\u00fct\u00fcnl\u00fc\u011f\u00fc:<\/strong> Git, verileri SHA-1 hash&#8217;leri kullanarak saklar ve her nesnenin (commit, tree, blob) b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc garanti eder. Bu, veri bozulmas\u0131n\u0131 tespit etmeyi ve \u00f6nlemeyi kolayla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>A\u00e7\u0131k Kaynak ve B\u00fcy\u00fck Topluluk:<\/strong> A\u00e7\u0131k kaynakl\u0131 olmas\u0131 ve devasa bir geli\u015ftirici toplulu\u011funa sahip olmas\u0131, s\u00fcrekli geli\u015fimini ve geni\u015f destek kaynaklar\u0131n\u0131n bulunmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>Esneklik:<\/strong> Git, \u00e7ok \u00e7e\u015fitli i\u015f ak\u0131\u015flar\u0131n\u0131 destekler ve k\u00fc\u00e7\u00fck ki\u015fisel projelerden b\u00fcy\u00fck kurumsal projelere kadar her \u00f6l\u00e7ekteki projede kullan\u0131labilir.<\/p>\n<p>Bu rehber, Git&#8217;i etkin bir \u015fekilde kullanmak i\u00e7in bilmeniz gereken temel kavramlar\u0131, komutlar\u0131 ve en iyi uygulamalar\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayacakt\u0131r.<\/p>\n<h2>Git Temelleri ve Kurulum<\/h2>\n<p>Git&#8217;i kullanmaya ba\u015flamadan \u00f6nce, sisteminize kurman\u0131z ve temel yap\u0131land\u0131rmalar\u0131 yapman\u0131z gerekir. Bu b\u00f6l\u00fcm, Git&#8217;in kurulumunu ve ilk ayarlar\u0131n\u0131 kapsar.<\/p>\n<h3>Git Kurulumu<\/h3>\n<p>Git, \u00e7o\u011fu i\u015fletim sistemi i\u00e7in kolayca kurulabilir.<\/p>\n<p>*   <strong>Windows:<\/strong> Git&#8217;in resmi web sitesinden (git-scm.com) &#8220;Git for Windows&#8221; y\u00fckleyicisini indirebilirsiniz. Kurulum s\u0131ras\u0131nda varsay\u0131lan se\u00e7enekleri kabul etmek genellikle yeterlidir. Bu, Git Bash (Unix benzeri komut sat\u0131r\u0131 ortam\u0131) ve Git GUI gibi ara\u00e7lar\u0131 da kuracakt\u0131r.<br \/>\n*   <strong>macOS:<\/strong> Xcode Komut Sat\u0131r\u0131 Ara\u00e7lar\u0131&#8217;n\u0131 y\u00fckleyerek Git&#8217;i alabilirsiniz: <code>xcode-select --install<\/code>. Alternatif olarak, Homebrew paket y\u00f6neticisi ile <code>brew install git<\/code> komutunu kullanarak daha g\u00fcncel bir s\u00fcr\u00fcm y\u00fckleyebilirsiniz.<br \/>\n*   <strong>Linux:<\/strong> \u00c7o\u011fu Linux da\u011f\u0131t\u0131m\u0131nda Git, paket y\u00f6neticisi arac\u0131l\u0131\u011f\u0131yla kurulabilir.<br \/>\n    *   Debian\/Ubuntu tabanl\u0131 sistemler: <code>sudo apt update && sudo apt install git<\/code><br \/>\n    *   Fedora tabanl\u0131 sistemler: <code>sudo dnf install git<\/code><br \/>\n    *   Arch Linux: <code>sudo pacman -S git<\/code><\/p>\n<p>Kurulumdan sonra, terminal veya komut istemcisinde <code>git --version<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak Git&#8217;in do\u011fru \u015fekilde kurulup kurulmad\u0131\u011f\u0131n\u0131 ve s\u00fcr\u00fcm\u00fcn\u00fc kontrol edebilirsiniz.<\/p>\n<h3>Temel Git Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Git&#8217;i ilk kez kurduktan sonra, commit&#8217;lerinizde kimli\u011finizin g\u00f6r\u00fcnmesi i\u00e7in ad\u0131n\u0131z\u0131 ve e-posta adresinizi yap\u0131land\u0131rman\u0131z \u00f6nemlidir. Bu bilgiler, yapt\u0131\u011f\u0131n\u0131z her de\u011fi\u015fiklikle birlikte kaydedilir.<\/p>\n<pre><code class=\"language-bash\">git config --global user.name \"Ad\u0131n\u0131z Soyad\u0131n\u0131z\"\ngit config --global user.email \"eposta@adresiniz.com\"<\/code><\/pre>\n<p><code>--global<\/code> bayra\u011f\u0131, bu ayarlar\u0131n sisteminizdeki t\u00fcm Git depolar\u0131 i\u00e7in ge\u00e7erli olmas\u0131n\u0131 sa\u011flar. E\u011fer belirli bir depo i\u00e7in farkl\u0131 bir isim veya e-posta kullanmak isterseniz, o deponun dizininde <code>--global<\/code> bayra\u011f\u0131 olmadan ayn\u0131 komutlar\u0131 \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<p>Di\u011fer faydal\u0131 yap\u0131land\u0131rma ayarlar\u0131 \u015funlard\u0131r:<\/p>\n<p>*   <strong>Varsay\u0131lan Metin D\u00fczenleyici:<\/strong> Git, commit mesajlar\u0131 gibi durumlarda bir metin d\u00fczenleyici a\u00e7ar. Varsay\u0131lan\u0131 de\u011fi\u015ftirmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">git config --global core.editor \"nano\" # veya \"vim\", \"code --wait\", vb.<\/code><\/pre>\n<p>*   <strong>Renkli \u00c7\u0131kt\u0131:<\/strong> Git&#8217;in \u00e7\u0131kt\u0131s\u0131n\u0131 daha okunakl\u0131 hale getirmek i\u00e7in renkli \u00e7\u0131kt\u0131lar\u0131 etkinle\u015ftirebilirsiniz (\u00e7o\u011fu kurulumda varsay\u0131lan olarak etkindir):<\/p>\n<pre><code class=\"language-bash\">git config --global color.ui auto<\/code><\/pre>\n<p>*   <strong>Alias&#8217;lar (K\u0131sayollar):<\/strong> S\u0131k kulland\u0131\u011f\u0131n\u0131z komutlar i\u00e7in k\u0131sayollar olu\u015fturabilirsiniz. \u00d6rne\u011fin, <code>git status<\/code> yerine <code>git st<\/code> yazmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">git config --global alias.st status\n    git config --global alias.co checkout\n    git config --global alias.br branch\n    git config --global alias.ci commit\n    git config --global alias.lg \"log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative\"<\/code><\/pre>\n<p>Bu ayarlar\u0131 kontrol etmek i\u00e7in <code>git config --list<\/code> komutunu kullanabilirsiniz.<\/p>\n<h2>Git \u0130\u015f Ak\u0131\u015f\u0131 ve Temel Komutlar<\/h2>\n<p>Git&#8217;in temelini olu\u015fturan \u00fc\u00e7 ana durum ve bu durumlar aras\u0131nda dosyalar\u0131 hareket ettiren temel komutlar vard\u0131r. Bu b\u00f6l\u00fcm, bir projenin ba\u015flang\u0131c\u0131ndan itibaren temel Git i\u015flemlerini a\u00e7\u0131klar.<\/p>\n<h3>\u00c7al\u0131\u015fma Dizini, Haz\u0131rl\u0131k Alan\u0131 ve Depo Kavramlar\u0131<\/h3>\n<p>Git&#8217;in \u00e7al\u0131\u015fma prensibini anlamak i\u00e7in \u00fc\u00e7 ana durum veya alan kavram\u0131n\u0131 bilmek \u00f6nemlidir:<\/p>\n<p>1.  <strong>\u00c7al\u0131\u015fma Dizini (Working Directory):<\/strong> Projenizin dosyalar\u0131n\u0131n bilgisayar\u0131n\u0131zda g\u00f6rd\u00fc\u011f\u00fcn\u00fcz, \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131z ger\u00e7ek halidir. Bu alandaki dosyalar de\u011fi\u015ftirilebilir, eklenebilir veya silinebilir.<br \/>\n2.  <strong>Haz\u0131rl\u0131k Alan\u0131 (Staging Area \/ Index):<\/strong> Bir sonraki commit&#8217;inize dahil etmek istedi\u011finiz de\u011fi\u015fikliklerin topland\u0131\u011f\u0131 ge\u00e7ici bir aland\u0131r. <code>git add<\/code> komutuyla dosyalar\u0131 bu alana eklersiniz. Bu, sadece belirli de\u011fi\u015fiklikleri commit etmenizi sa\u011flar, \u00e7al\u0131\u015fma dizininizdeki t\u00fcm de\u011fi\u015fiklikleri de\u011fil.<br \/>\n3.  <strong>Yerel Depo (Local Repository):<\/strong> Projenizin t\u00fcm commit ge\u00e7mi\u015finin depoland\u0131\u011f\u0131 yerdir. <code>git commit<\/code> komutuyla haz\u0131rl\u0131k alan\u0131ndaki de\u011fi\u015fiklikler kal\u0131c\u0131 olarak yerel depoya kaydedilir. Her commit, projenin belirli bir anl\u0131k g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc temsil eder.<\/p>\n<p>Bu \u00fc\u00e7 alan aras\u0131ndaki ili\u015fkiyi anlamak, Git&#8217;i etkili kullanman\u0131n anahtar\u0131d\u0131r.<\/p>\n<h3>Yeni Bir Depo Ba\u015flatma (<code>git init<\/code>)<\/h3>\n<p>Yeni bir Git deposu olu\u015fturmak veya mevcut bir dizini Git ile y\u00f6netmeye ba\u015flamak i\u00e7in <code>git init<\/code> komutunu kullan\u0131r\u0131z.<\/p>\n<pre><code class=\"language-bash\"># Yeni bir proje i\u00e7in:\nmkdir yeni-proje\ncd yeni-proje\ngit init<\/code><\/pre>\n<p>Bu komut, ge\u00e7erli dizinde <code>.git<\/code> ad\u0131nda gizli bir alt dizin olu\u015fturur. Bu dizin, Git&#8217;in projenin t\u00fcm s\u00fcr\u00fcm ge\u00e7mi\u015fini ve yap\u0131land\u0131rmas\u0131n\u0131 saklad\u0131\u011f\u0131 yerdir.<\/p>\n<h3>Dosyalar\u0131 Haz\u0131rl\u0131k Alan\u0131na Ekleme (<code>git add<\/code>)<\/h3>\n<p>\u00c7al\u0131\u015fma dizininizde yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikleri (yeni dosyalar, de\u011fi\u015ftirilen dosyalar, silinen dosyalar) bir sonraki commit&#8217;e dahil etmek i\u00e7in haz\u0131rl\u0131k alan\u0131na eklemeniz gerekir. Bu i\u015flem <code>git add<\/code> komutuyla yap\u0131l\u0131r.<\/p>\n<pre><code class=\"language-bash\">git add dosya.txt          # Belirli bir dosyay\u0131 ekle\ngit add klasor\/            # Belirli bir klas\u00f6rdeki t\u00fcm dosyalar\u0131 ekle\ngit add .                  # Mevcut dizindeki t\u00fcm de\u011fi\u015fiklikleri ekle (dikkatli kullan\u0131n)<\/code><\/pre>\n<p><code>git add .<\/code> komutu, yeni eklenen dosyalar\u0131, de\u011fi\u015ftirilen dosyalar\u0131 ve silinen dosyalar\u0131 (e\u011fer <code>git rm<\/code> ile silinmediyse) haz\u0131rl\u0131k alan\u0131na ekler.<\/p>\n<h3>De\u011fi\u015fiklikleri Kaydetme (<code>git commit<\/code>)<\/h3>\n<p>Haz\u0131rl\u0131k alan\u0131ndaki de\u011fi\u015fiklikleri yerel depoya kal\u0131c\u0131 olarak kaydetmek i\u00e7in <code>git commit<\/code> komutunu kullan\u0131r\u0131z. Her commit, projenin o anki durumunun bir anl\u0131k g\u00f6r\u00fcnt\u00fcs\u00fcd\u00fcr ve benzersiz bir kimli\u011fe (SHA-1 hash) sahiptir. Her commit&#8217;e anlaml\u0131 bir mesaj eklemek \u00e7ok \u00f6nemlidir.<\/p>\n<pre><code class=\"language-bash\">git commit -m \"\u0130lk commit: Proje yap\u0131s\u0131 olu\u015fturuldu\"<\/code><\/pre>\n<p><code>-m<\/code> bayra\u011f\u0131, commit mesaj\u0131n\u0131 do\u011frudan komut sat\u0131r\u0131nda yazman\u0131z\u0131 sa\u011flar. E\u011fer <code>-m<\/code> bayra\u011f\u0131n\u0131 kullanmazsan\u0131z, Git varsay\u0131lan metin d\u00fczenleyicinizi a\u00e7arak mesaj\u0131 yazman\u0131z\u0131 isteyecektir. \u0130yi bir commit mesaj\u0131, yap\u0131lan de\u011fi\u015fikli\u011fin ne oldu\u011funu ve neden yap\u0131ld\u0131\u011f\u0131n\u0131 a\u00e7\u0131k\u00e7a belirtmelidir. Genellikle ilk sat\u0131r k\u0131sa bir \u00f6zet olur, ard\u0131ndan bo\u015f bir sat\u0131r ve daha detayl\u0131 bir a\u00e7\u0131klama gelir.<\/p>\n<h3>Depo Durumunu Kontrol Etme (<code>git status<\/code>)<\/h3>\n<p><code>git status<\/code> komutu, \u00e7al\u0131\u015fma dizininizdeki ve haz\u0131rl\u0131k alan\u0131n\u0131zdaki mevcut durumu g\u00f6sterir. Hangi dosyalar\u0131n de\u011fi\u015ftirildi\u011fini, hangilerinin haz\u0131rl\u0131k alan\u0131nda oldu\u011funu ve hangilerinin takip edilmedi\u011fini (untracked) g\u00f6sterir.<\/p>\n<pre><code class=\"language-bash\">git status<\/code><\/pre>\n<p>Bu komutun \u00e7\u0131kt\u0131s\u0131 size yol g\u00f6sterici olacakt\u0131r:<br \/>\n*   &#8220;Changes to be committed&#8221;: Haz\u0131rl\u0131k alan\u0131ndaki dosyalar.<br \/>\n*   &#8220;Changes not staged for commit&#8221;: \u00c7al\u0131\u015fma dizinindeki ancak haz\u0131rl\u0131k alan\u0131na eklenmemi\u015f de\u011fi\u015ftirilmi\u015f dosyalar.<br \/>\n*   &#8220;Untracked files&#8221;: Git taraf\u0131ndan hen\u00fcz takip edilmeyen yeni dosyalar.<\/p>\n<h3>De\u011fi\u015fiklikleri G\u00f6r\u00fcnt\u00fcleme (<code>git diff<\/code>)<\/h3>\n<p><code>git diff<\/code> komutu, iki farkl\u0131 durum aras\u0131ndaki de\u011fi\u015fiklikleri kar\u015f\u0131la\u015ft\u0131rman\u0131z\u0131 sa\u011flar.<\/p>\n<p>*   <strong>\u00c7al\u0131\u015fma Dizini ile Haz\u0131rl\u0131k Alan\u0131 aras\u0131ndaki fark:<\/strong><\/p>\n<pre><code class=\"language-bash\">git diff<\/code><\/pre>\n<p>    Bu, hen\u00fcz <code>git add<\/code> ile haz\u0131rl\u0131k alan\u0131na eklemedi\u011finiz de\u011fi\u015fiklikleri g\u00f6sterir.<br \/>\n*   <strong>Haz\u0131rl\u0131k Alan\u0131 ile Son Commit aras\u0131ndaki fark:<\/strong><\/p>\n<pre><code class=\"language-bash\">git diff --staged # veya git diff --cached<\/code><\/pre>\n<p>    Bu, <code>git add<\/code> ile haz\u0131rl\u0131k alan\u0131na ekledi\u011finiz ancak hen\u00fcz commit etmedi\u011finiz de\u011fi\u015fiklikleri g\u00f6sterir.<br \/>\n*   <strong>\u0130ki Commit aras\u0131ndaki fark:<\/strong><\/p>\n<pre><code class=\"language-bash\">git diff commit_id1 commit_id2<\/code><\/pre>\n<p>    Belirli commit&#8217;ler aras\u0131ndaki fark\u0131 g\u00f6sterir.<\/p>\n<h3>Dosyalar\u0131 Silme ve Yeniden Adland\u0131rma (<code>git rm<\/code>, <code>git mv<\/code>)<\/h3>\n<p>Git taraf\u0131ndan takip edilen dosyalar\u0131 \u00e7al\u0131\u015fma dizininden silmek ve bu de\u011fi\u015fikli\u011fi haz\u0131rl\u0131k alan\u0131na eklemek i\u00e7in <code>git rm<\/code> komutunu kullan\u0131r\u0131z.<\/p>\n<pre><code class=\"language-bash\">git rm dosya.txt             # Dosyay\u0131 siler ve haz\u0131rl\u0131k alan\u0131na ekler\ngit rm -cached dosya.txt     # Dosyay\u0131 \u00e7al\u0131\u015fma dizininde b\u0131rak\u0131r ama Git takibinden \u00e7\u0131kar\u0131r<\/code><\/pre>\n<p>Dosyalar\u0131 yeniden adland\u0131rmak veya ta\u015f\u0131mak i\u00e7in <code>git mv<\/code> komutunu kullanmak en iyisidir. Bu, Git&#8217;in dosya ge\u00e7mi\u015fini daha iyi takip etmesini sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">git mv eski_ad.txt yeni_ad.txt<\/code><\/pre>\n<p>Her iki komut da de\u011fi\u015fiklikleri otomatik olarak haz\u0131rl\u0131k alan\u0131na ekler, bu y\u00fczden ard\u0131ndan bir <code>git commit<\/code> yapman\u0131z gerekir.<\/p>\n<h3>Commit Ge\u00e7mi\u015fini \u0130nceleme (<code>git log<\/code>)<\/h3>\n<p><code>git log<\/code> komutu, projenin commit ge\u00e7mi\u015fini g\u00f6sterir. Her commit&#8217;in SHA-1 hash&#8217;ini, yazar\u0131n\u0131, tarihini ve commit mesaj\u0131n\u0131 listeler.<\/p>\n<pre><code class=\"language-bash\">git log<\/code><\/pre>\n<p><code>git log<\/code> komutu i\u00e7in bir\u00e7ok yararl\u0131 bayrak vard\u0131r:<br \/>\n*   <code>git log --oneline<\/code>: Her commit&#8217;i tek bir sat\u0131rda, k\u0131sa SHA ve mesajla g\u00f6sterir.<br \/>\n*   <code>git log --graph<\/code>: Commit ge\u00e7mi\u015fini bir ASCII grafi\u011fi ile g\u00f6rselle\u015ftirir, dallanmalar\u0131 ve birle\u015ftirmeleri g\u00f6sterir.<br \/>\n*   <code>git log --pretty=format:\"...\"<\/code>: \u00c7\u0131kt\u0131n\u0131n format\u0131n\u0131 \u00f6zelle\u015ftirmenizi sa\u011flar.<br \/>\n*   <code>git log -p<\/code>: Her commit ile birlikte yap\u0131lan de\u011fi\u015fiklikleri (yama format\u0131nda) g\u00f6sterir.<br \/>\n*   <code>git log --author=\"Ad\u0131n\u0131z\"<\/code>: Belirli bir yazar\u0131n commit&#8217;lerini g\u00f6sterir.<br \/>\n*   <code>git log --since=\"2 weeks ago\"<\/code>: Belirli bir zamandan sonraki commit&#8217;leri g\u00f6sterir.<\/p>\n<p>Bu komutlar, projenizin ge\u00e7mi\u015fini anlamak ve belirli de\u011fi\u015fiklikleri bulmak i\u00e7in paha bi\u00e7ilmezdir.<\/p>\n<h2>Dallanma ve Birle\u015ftirme (Branching &#038; Merging)<\/h2>\n<p>Dallanma ve birle\u015ftirme, Git&#8217;in en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biridir ve modern yaz\u0131l\u0131m geli\u015ftirme i\u015f ak\u0131\u015flar\u0131n\u0131n temelini olu\u015fturur. Bu \u00f6zellikler, ekip \u00fcyelerinin ayn\u0131 proje \u00fczerinde paralel olarak, birbirlerinin \u00e7al\u0131\u015fmalar\u0131n\u0131 etkilemeden \u00e7al\u0131\u015fmas\u0131na olanak tan\u0131r.<\/p>\n<h3>Dal Kavram\u0131 ve \u00d6nemi<\/h3>\n<p>Bir dal (branch), projenizin ana geli\u015ftirme hatt\u0131ndan ayr\u0131lan ba\u011f\u0131ms\u0131z bir geli\u015ftirme yoludur. Yeni bir \u00f6zellik geli\u015ftirmek, bir hatay\u0131 d\u00fczeltmek veya deneysel bir \u00e7al\u0131\u015fma yapmak istedi\u011finizde, genellikle ana daldan (\u00e7o\u011funlukla <code>main<\/code> veya <code>master<\/code> olarak adland\u0131r\u0131l\u0131r) yeni bir dal olu\u015fturursunuz. Bu, ana dal\u0131n istikrarl\u0131 kalmas\u0131n\u0131 sa\u011flarken, yeni \u00e7al\u0131\u015fmalar\u0131n\u0131z\u0131 izole bir ortamda geli\u015ftirmenize olanak tan\u0131r. \u0130\u015finiz bitti\u011finde, yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikleri ana dala geri birle\u015ftirebilirsiniz.<\/p>\n<h3>Dal Olu\u015fturma (<code>git branch<\/code>)<\/h3>\n<p>Yeni bir dal olu\u015fturmak i\u00e7in <code>git branch<\/code> komutunu kullan\u0131r\u0131z. Bu komut sadece yeni bir dal i\u015faret\u00e7isi olu\u015fturur, sizi o dala ge\u00e7irmez.<\/p>\n<pre><code class=\"language-bash\">git branch yeni-ozellik<\/code><\/pre>\n<p>Mevcut t\u00fcm dallar\u0131 ve hangi dalda oldu\u011funuzu g\u00f6rmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">git branch<\/code><\/pre>\n<p>Mevcut dal\u0131n yan\u0131nda bir y\u0131ld\u0131z i\u015fareti (*) bulunur.<\/p>\n<h3>Dallar\u0131 De\u011fi\u015ftirme (<code>git checkout<\/code>)<\/h3>\n<p>Farkl\u0131 bir dala ge\u00e7mek veya belirli bir commit&#8217;e d\u00f6nmek i\u00e7in <code>git checkout<\/code> komutunu kullan\u0131r\u0131z.<\/p>\n<pre><code class=\"language-bash\">git checkout yeni-ozellik<\/code><\/pre>\n<p>Bu komut, \u00e7al\u0131\u015fma dizininizi ve haz\u0131rl\u0131k alan\u0131n\u0131z\u0131 <code>yeni-ozellik<\/code> dal\u0131n\u0131n son commit&#8217;ine g\u00f6re g\u00fcnceller.<\/p>\n<p>Git 2.23 ve sonraki s\u00fcr\u00fcmlerinde, yeni bir dal olu\u015fturup ona do\u011frudan ge\u00e7mek i\u00e7in <code>git switch<\/code> komutu ve yeni bir dal olu\u015fturup ona ge\u00e7mek i\u00e7in <code>git restore<\/code> komutu tan\u0131t\u0131lm\u0131\u015ft\u0131r. Ancak <code>git checkout<\/code> hala yayg\u0131n olarak kullan\u0131lmaktad\u0131r.<\/p>\n<pre><code class=\"language-bash\">git checkout -b yeni-dal-adi # Yeni bir dal olu\u015fturur ve o dala ge\u00e7er<\/code><\/pre>\n<h3>Dallar\u0131 Birle\u015ftirme (<code>git merge<\/code>)<\/h3>\n<p>Bir dalda yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikleri ba\u015fka bir dala (genellikle ana dala) entegre etmek i\u00e7in <code>git merge<\/code> komutunu kullan\u0131r\u0131z. Birle\u015ftirme i\u015flemi, iki dal\u0131n ortak bir ge\u00e7mi\u015fi oldu\u011fu durumlarda \u00e7al\u0131\u015f\u0131r ve de\u011fi\u015fiklikleri birle\u015ftirerek yeni bir commit olu\u015fturur.<\/p>\n<p>\u00d6nce ana dala ge\u00e7in:<\/p>\n<pre><code class=\"language-bash\">git checkout main<\/code><\/pre>\n<p>Ard\u0131ndan <code>yeni-ozellik<\/code> dal\u0131n\u0131 <code>main<\/code> dal\u0131na birle\u015ftirin:<\/p>\n<pre><code class=\"language-bash\">git merge yeni-ozellik<\/code><\/pre>\n<p>Birle\u015ftirme i\u015flemi s\u0131ras\u0131nda farkl\u0131 senaryolar ortaya \u00e7\u0131kabilir:<br \/>\n*   <strong>Fast-forward Merge:<\/strong> E\u011fer birle\u015ftirilen dal, hedef daldan ileriye gitmi\u015fse ve hedef dalda o zamandan beri yeni commit yoksa, Git sadece hedef dal i\u015faret\u00e7isini ileriye ta\u015f\u0131r. Bu durumda yeni bir birle\u015ftirme commit&#8217;i olu\u015fmaz.<br \/>\n*   <strong>Three-way Merge:<\/strong> E\u011fer her iki dalda da ortak atadan sonra farkl\u0131 commit&#8217;ler varsa, Git birle\u015ftirme i\u015flemini ger\u00e7ekle\u015ftirmek i\u00e7in bir birle\u015ftirme commit&#8217;i olu\u015fturur.<\/p>\n<p><strong>\u00c7ak\u0131\u015fmalar\u0131n (Conflict) \u00c7\u00f6z\u00fcm\u00fc:<\/strong> E\u011fer ayn\u0131 dosyan\u0131n ayn\u0131 sat\u0131rlar\u0131nda veya yak\u0131n b\u00f6lgelerinde her iki dalda da farkl\u0131 de\u011fi\u015fiklikler yap\u0131lm\u0131\u015fsa, Git bu de\u011fi\u015fiklikleri otomatik olarak birle\u015ftiremez ve bir \u00e7ak\u0131\u015fma (conflict) bildirir. Bu durumda, Git dosyay\u0131 \u00f6zel i\u015faretleyicilerle (<code><<<<<<<<\/code>, <code>=======<\/code>, <code>>>>>>>><\/code>) i\u015faretler ve \u00e7ak\u0131\u015fmay\u0131 manuel olarak \u00e7\u00f6zmeniz gerekir.<\/p>\n<p>1.  <code>git status<\/code> ile \u00e7ak\u0131\u015fan dosyalar\u0131 g\u00f6r\u00fcn.<br \/>\n2.  \u00c7ak\u0131\u015fan dosyalar\u0131 bir metin d\u00fczenleyiciyle a\u00e7\u0131n ve i\u015faretleyicileri kald\u0131rarak istedi\u011finiz son durumu olu\u015fturun.<br \/>\n3.  \u00c7ak\u0131\u015fmay\u0131 \u00e7\u00f6zd\u00fckten sonra dosyalar\u0131 haz\u0131rl\u0131k alan\u0131na ekleyin: <code>git add <\u00e7ak\u0131\u015fan_dosya.txt><\/code>.<br \/>\n4.  Birle\u015ftirme i\u015flemini tamamlamak i\u00e7in commit yap\u0131n: <code>git commit<\/code>. Git genellikle otomatik olarak bir birle\u015ftirme mesaj\u0131 olu\u015fturur, bunu oldu\u011fu gibi kabul edebilir veya d\u00fczenleyebilirsiniz.<\/p>\n<h3>Dallar\u0131 Silme (<code>git branch -d<\/code>)<\/h3>\n<p>Bir dalda yap\u0131lan de\u011fi\u015fiklikler ba\u015fka bir dala ba\u015far\u0131yla birle\u015ftirildikten sonra, o dala art\u0131k ihtiyac\u0131n\u0131z kalmad\u0131\u011f\u0131nda silebilirsiniz.<\/p>\n<pre><code class=\"language-bash\">git branch -d yeni-ozellik<\/code><\/pre>\n<p><code>-d<\/code> (delete) bayra\u011f\u0131, yaln\u0131zca birle\u015ftirilmi\u015f dallar\u0131 siler. E\u011fer bir dal birle\u015ftirilmemi\u015f de\u011fi\u015fiklikler i\u00e7eriyorsa ve onu silmek isterseniz, <code>-D<\/code> (force delete) bayra\u011f\u0131n\u0131 kullanman\u0131z gerekir (dikkatli kullan\u0131n, veri kayb\u0131na yol a\u00e7abilir).<\/p>\n<pre><code class=\"language-bash\">git branch -D tehlikeli-dal<\/code><\/pre>\n<h3>Uzak Dallarla \u00c7al\u0131\u015fma (<code>git push<\/code>, <code>git pull<\/code>, <code>git fetch<\/code>)<\/h3>\n<p>Yerel dallar\u0131n\u0131z\u0131n yan\u0131 s\u0131ra, uzak depolarda (GitHub, GitLab vb.) da dallar bulunur.<\/p>\n<p>*   <code>git push -u origin yeni-ozellik<\/code>: Yerel <code>yeni-ozellik<\/code> dal\u0131n\u0131z\u0131 <code>origin<\/code> adl\u0131 uzak depoya g\u00f6nderir ve bir takip ili\u015fkisi kurar. Art\u0131k sadece <code>git push<\/code> yazman\u0131z yeterli olacakt\u0131r.<br \/>\n*   <code>git pull origin main<\/code>: Uzak <code>main<\/code> dal\u0131ndaki de\u011fi\u015fiklikleri \u00e7eker ve yerel <code>main<\/code> dal\u0131n\u0131zla birle\u015ftirir.<br \/>\n*   <code>git fetch origin<\/code>: Uzak depodaki t\u00fcm dallar\u0131n ve commit'lerin en g\u00fcncel bilgilerini yerel deponuza indirir, ancak \u00e7al\u0131\u015fma dizininizi veya yerel dallar\u0131n\u0131z\u0131 g\u00fcncellemez. Bu, de\u011fi\u015fiklikleri birle\u015ftirmeden \u00f6nce incelemek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h2>Uzak Depolarla \u00c7al\u0131\u015fma<\/h2>\n<p>Git, da\u011f\u0131t\u0131k bir sistem oldu\u011fu i\u00e7in, birden fazla geli\u015ftiricinin ayn\u0131 proje \u00fczerinde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in uzak depolar (remote repositories) kullan\u0131l\u0131r. GitHub, GitLab, Bitbucket gibi platformlar, projelerinizi bar\u0131nd\u0131rmak ve ekip \u00fcyeleri aras\u0131nda i\u015fbirli\u011fini kolayla\u015ft\u0131rmak i\u00e7in pop\u00fcler uzak depo sa\u011flay\u0131c\u0131lar\u0131d\u0131r.<\/p>\n<h3>Uzak Depo Ekleme (<code>git remote add<\/code>)<\/h3>\n<p>Mevcut bir yerel Git deponuzu bir uzak depoya ba\u011flamak i\u00e7in <code>git remote add<\/code> komutunu kullan\u0131r\u0131z. Genellikle uzak deponuzun ad\u0131 <code>origin<\/code> olarak belirlenir.<\/p>\n<pre><code class=\"language-bash\">git remote add origin https:\/\/github.com\/kullaniciadi\/repo-adi.git<\/code><\/pre>\n<p>Bu komut, yerel deponuza <code>origin<\/code> ad\u0131nda bir takma ad tan\u0131mlar ve bu takma ad\u0131 belirtilen URL ile ili\u015fkilendirir. Art\u0131k uzak depoya ba\u015fvurmak i\u00e7in uzun URL yerine <code>origin<\/code> kullanabilirsiniz.<\/p>\n<p>Mevcut uzak depolar\u0131 listelemek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">git remote -v<\/code><\/pre>\n<p>Bu komut, uzak depolar\u0131n adlar\u0131n\u0131 ve URL'lerini (hem fetch hem de push i\u00e7in) g\u00f6sterir.<\/p>\n<h3>De\u011fi\u015fiklikleri Uzak Depoya G\u00f6nderme (<code>git push<\/code>)<\/h3>\n<p>Yerel deponuzdaki commit'leri uzak depoya g\u00f6ndermek i\u00e7in <code>git push<\/code> komutunu kullan\u0131r\u0131z. Bu, yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikleri ba\u015fkalar\u0131n\u0131n da g\u00f6rmesini ve eri\u015fmesini sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">git push origin main<\/code><\/pre>\n<p>Bu komut, yerel <code>main<\/code> dal\u0131ndaki commit'leri <code>origin<\/code> adl\u0131 uzak deponun <code>main<\/code> dal\u0131na g\u00f6nderir. E\u011fer yerel dal\u0131n\u0131z hen\u00fcz bir uzak dalla takip ili\u015fkisi kurmad\u0131ysa, <code>-u<\/code> (upstream) bayra\u011f\u0131n\u0131 kullanarak bu ili\u015fkiyi kurman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">git push -u origin main<\/code><\/pre>\n<p>Bundan sonra, sadece <code>git push<\/code> yazman\u0131z yeterli olacakt\u0131r.<\/p>\n<h3>Uzak Depodaki De\u011fi\u015fiklikleri \u00c7ekme (<code>git pull<\/code>, <code>git fetch<\/code>)<\/h3>\n<p>Ekip \u00fcyelerinizin uzak depoya g\u00f6nderdi\u011fi de\u011fi\u015fiklikleri yerel deponuza almak i\u00e7in iki ana komut kullan\u0131l\u0131r:<\/p>\n<p>*   <strong><code>git fetch<\/code>:<\/strong> Uzak depodaki t\u00fcm yeni commit'leri ve dallar\u0131 yerel deponuza indirir, ancak \u00e7al\u0131\u015fma dizininizi veya yerel dallar\u0131n\u0131z\u0131 de\u011fi\u015ftirmez. Bu, de\u011fi\u015fiklikleri yerel olarak birle\u015ftirmeden \u00f6nce incelemenizi sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">git fetch origin<\/code><\/pre>\n<p>    <code>git fetch<\/code> komutundan sonra, uzak depodaki dallar\u0131n g\u00fcncel durumunu <code>origin\/main<\/code> gibi adlarla g\u00f6rebilirsiniz.<br \/>\n*   <strong><code>git pull<\/code>:<\/strong> <code>git fetch<\/code> ve <code>git merge<\/code> komutlar\u0131n\u0131n birle\u015fimidir. Uzak depodaki de\u011fi\u015fiklikleri indirir ve mevcut yerel dal\u0131n\u0131zla otomatik olarak birle\u015ftirir.<\/p>\n<pre><code class=\"language-bash\">git pull origin main<\/code><\/pre>\n<p>    Bu komut, <code>origin<\/code> adl\u0131 uzak depodaki <code>main<\/code> dal\u0131ndaki de\u011fi\u015fiklikleri \u00e7eker ve mevcut yerel dal\u0131n\u0131zla birle\u015ftirir. E\u011fer birle\u015ftirme s\u0131ras\u0131nda \u00e7ak\u0131\u015fmalar olursa, bunlar\u0131 manuel olarak \u00e7\u00f6zmeniz gerekir.<\/p>\n<p><code>git fetch<\/code> genellikle daha g\u00fcvenli bir yakla\u015f\u0131md\u0131r, \u00e7\u00fcnk\u00fc de\u011fi\u015fiklikleri yerel deponuza indirdikten sonra onlar\u0131 inceleme ve manuel olarak birle\u015ftirme f\u0131rsat\u0131 verir. <code>git pull<\/code> ise h\u0131zl\u0131 bir \u015fekilde g\u00fcncel kalmak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r, ancak \u00e7ak\u0131\u015fma potansiyelini art\u0131rabilir.<\/p>\n<h2>De\u011fi\u015fiklikleri Geri Alma ve D\u00fczenleme<\/h2>\n<p>Git'in en g\u00fc\u00e7l\u00fc yanlar\u0131ndan biri, projenizin ge\u00e7mi\u015fini esnek bir \u015fekilde y\u00f6netebilmenizdir. Bu, hatalar\u0131 geri alman\u0131z\u0131, commit'leri d\u00fczenlemenizi veya ge\u00e7ici de\u011fi\u015fiklikleri saklaman\u0131z\u0131 sa\u011flar.<\/p>\n<h3>Haz\u0131rl\u0131k Alan\u0131ndan Dosya \u00c7\u0131karma (<code>git reset HEAD <file><\/code>)<\/h3>\n<p>Yanl\u0131\u015fl\u0131kla haz\u0131rl\u0131k alan\u0131na ekledi\u011finiz bir dosyay\u0131 (yani <code>git add<\/code> ile ekledi\u011finiz ancak hen\u00fcz commit etmedi\u011finiz bir dosyay\u0131) haz\u0131rl\u0131k alan\u0131ndan \u00e7\u0131karmak i\u00e7in <code>git reset HEAD <file><\/code> komutunu kullan\u0131r\u0131z.<\/p>\n<pre><code class=\"language-bash\">git reset HEAD yanlis_dosya.txt<\/code><\/pre>\n<p>Bu komut, dosyay\u0131 haz\u0131rl\u0131k alan\u0131ndan kald\u0131r\u0131r, ancak \u00e7al\u0131\u015fma dizininizde de\u011fi\u015fiklikleri oldu\u011fu gibi b\u0131rak\u0131r. B\u00f6ylece dosyay\u0131 tekrar d\u00fczenleyebilir veya hi\u00e7 commit etmeyebilirsiniz. Git 2.23 sonras\u0131 s\u00fcr\u00fcmlerde <code>git restore --staged <file><\/code> de ayn\u0131 i\u015fi g\u00f6r\u00fcr.<\/p>\n<h3>Son Commit'i Geri Alma (<code>git revert<\/code>)<\/h3>\n<p><code>git revert<\/code> komutu, belirli bir commit'in yapt\u0131\u011f\u0131 de\u011fi\u015fiklikleri geri alan yeni bir commit olu\u015fturur. Bu, projenin ge\u00e7mi\u015fini de\u011fi\u015ftirmez, sadece \"geri alma\" i\u015flemini yeni bir commit olarak kaydeder. Uzak depoya g\u00f6nderilmi\u015f (public) commit'leri geri almak i\u00e7in g\u00fcvenli bir y\u00f6ntemdir.<\/p>\n<pre><code class=\"language-bash\">git revert HEAD # Son commit'i geri al\u0131r\ngit revert commit_id # Belirli bir commit'i geri al\u0131r<\/code><\/pre>\n<p><code>git revert<\/code> komutundan sonra, geri alma commit'i i\u00e7in bir mesaj yazman\u0131z istenecektir.<\/p>\n<h3>De\u011fi\u015fiklikleri Geri Alma (<code>git reset<\/code>)<\/h3>\n<p><code>git reset<\/code> komutu, daha g\u00fc\u00e7l\u00fc ve esnek bir geri alma arac\u0131d\u0131r, ancak ge\u00e7mi\u015fi de\u011fi\u015ftirebildi\u011fi i\u00e7in dikkatli kullan\u0131lmal\u0131d\u0131r, \u00f6zellikle uzak depoya g\u00f6nderilmi\u015f commit'ler \u00fczerinde. \u00dc\u00e7 ana modu vard\u0131r:<\/p>\n<p>*   <strong><code>git reset --soft <commit_id><\/code>:<\/strong> Belirtilen commit'e geri d\u00f6ner, ancak \u00e7al\u0131\u015fma dizinindeki ve haz\u0131rl\u0131k alan\u0131ndaki t\u00fcm de\u011fi\u015fiklikleri korur. Bu, son commit'i geri al\u0131p, de\u011fi\u015fiklikleri haz\u0131rl\u0131k alan\u0131nda tutarak yeni bir commit yapmak istedi\u011finizde kullan\u0131\u015fl\u0131d\u0131r.<br \/>\n*   <strong><code>git reset --mixed <commit_id><\/code> (Varsay\u0131lan):<\/strong> Belirtilen commit'e geri d\u00f6ner, haz\u0131rl\u0131k alan\u0131ndaki de\u011fi\u015fiklikleri kald\u0131r\u0131r, ancak \u00e7al\u0131\u015fma dizinindeki de\u011fi\u015fiklikleri korur. Yani, de\u011fi\u015fiklikler \u00e7al\u0131\u015fma dizininde \"staged\" olmayan (haz\u0131rl\u0131k alan\u0131nda olmayan) durumdad\u0131r.<br \/>\n*   <strong><code>git reset --hard <commit_id><\/code>:<\/strong> Belirtilen commit'e geri d\u00f6ner ve \u00e7al\u0131\u015fma dizinindeki ve haz\u0131rl\u0131k alan\u0131ndaki t\u00fcm de\u011fi\u015fiklikleri siler. Bu, en y\u0131k\u0131c\u0131 moddur ve t\u00fcm kaydedilmemi\u015f de\u011fi\u015fikliklerinizi kal\u0131c\u0131 olarak kaybedece\u011finiz i\u00e7in \u00e7ok dikkatli kullan\u0131lmal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">git reset --hard HEAD~1 # Son commit'i tamamen siler ve \u00e7al\u0131\u015fma dizinini \u00f6nceki commit'in durumuna getirir.\n                         # HEAD~1, HEAD'den bir \u00f6nceki commit anlam\u0131na gelir.<\/code><\/pre>\n<p><code>git reset --hard<\/code> komutunu, sadece yerel deponuzda ve hen\u00fcz uzak depoya g\u00f6ndermedi\u011finiz de\u011fi\u015fiklikler \u00fczerinde kullanmal\u0131s\u0131n\u0131z.<\/p>\n<h3>Son Commit Mesaj\u0131n\u0131 D\u00fczeltme (<code>git commit --amend<\/code>)<\/h3>\n<p>En son commit'inizin mesaj\u0131n\u0131 veya i\u00e7eri\u011fini (haz\u0131rl\u0131k alan\u0131na eklenmi\u015f de\u011fi\u015fiklikleri) de\u011fi\u015ftirmek i\u00e7in <code>git commit --amend<\/code> komutunu kullan\u0131r\u0131z. Bu, son commit'i \"yeniden yazar\".<\/p>\n<pre><code class=\"language-bash\">git commit --amend -m \"Yeni d\u00fczeltilmi\u015f commit mesaj\u0131\"<\/code><\/pre>\n<p>E\u011fer <code>-m<\/code> bayra\u011f\u0131n\u0131 kullanmazsan\u0131z, Git varsay\u0131lan d\u00fczenleyicinizi a\u00e7ar ve mevcut commit mesaj\u0131n\u0131 d\u00fczenlemenize izin verir. <code>--amend<\/code> komutu sadece son commit \u00fczerinde \u00e7al\u0131\u015f\u0131r ve uzak depoya g\u00f6nderilmemi\u015f commit'ler i\u00e7in idealdir. Uzak depoya g\u00f6nderilmi\u015f bir commit'i <code>amend<\/code> ederseniz, push yaparken \u00e7ak\u0131\u015fmalar ya\u015fars\u0131n\u0131z.<\/p>\n<h3>Ge\u00e7ici De\u011fi\u015fiklikleri Saklama (<code>git stash<\/code>)<\/h3>\n<p>\u00dczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikleri commit etmeden ba\u015fka bir dala ge\u00e7meniz gerekti\u011finde, ancak bu de\u011fi\u015fiklikleri kaybetmek istemedi\u011finizde <code>git stash<\/code> komutunu kullanabilirsiniz. Bu, \u00e7al\u0131\u015fma dizininizi temizler ve de\u011fi\u015fikliklerinizi ge\u00e7ici olarak bir \"stash\" y\u0131\u011f\u0131n\u0131na kaydeder.<\/p>\n<pre><code class=\"language-bash\">git stash save \"\u00d6zellik X \u00fczerinde yar\u0131da kalan i\u015f\" # De\u011fi\u015fiklikleri kaydeder\ngit stash list                                  # Kaydedilmi\u015f stash'leri listeler\ngit stash pop                                   # En son kaydedilen stash'i uygular ve y\u0131\u011f\u0131ndan kald\u0131r\u0131r\ngit stash apply stash@{1}                       # Belirli bir stash'i uygular (y\u0131\u011f\u0131ndan kald\u0131rmaz)\ngit stash drop                                  # En son stash'i y\u0131\u011f\u0131ndan kald\u0131r\u0131r<\/code><\/pre>\n<p><code>git stash<\/code> komutu, \u00f6zellikle acil bir hata d\u00fczeltmesi yapman\u0131z gerekti\u011finde veya farkl\u0131 bir dala ge\u00e7ip ba\u015fka bir i\u015fe ba\u015flaman\u0131z gerekti\u011finde \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h2>Etiketleme (Tagging)<\/h2>\n<p>Git'te etiketleme, projenizin belirli noktalar\u0131na (genellikle \u00f6nemli s\u00fcr\u00fcmlerine, \u00f6rne\u011fin v1.0, v2.0) kal\u0131c\u0131 i\u015faretler koyman\u0131z\u0131 sa\u011flar. Bu etiketler, daha sonra bu belirli commit'lere kolayca ba\u015fvurmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h3>Etiket Olu\u015fturma (<code>git tag<\/code>)<\/h3>\n<p>\u0130ki t\u00fcr etiket vard\u0131r:<br \/>\n1.  <strong>Hafif Etiketler (Lightweight Tags):<\/strong> Sadece belirli bir commit'e i\u015faret eden bir pointer gibidir.<\/p>\n<pre><code class=\"language-bash\">git tag v1.0.0<\/code><\/pre>\n<p>2.  <strong>A\u00e7\u0131klamal\u0131 Etiketler (Annotated Tags):<\/strong> Daha fazla bilgi (etiketleyen ki\u015fi, tarih, mesaj) i\u00e7eren tam te\u015fekk\u00fcll\u00fc Git nesneleridir. Genellikle s\u00fcr\u00fcm etiketleri i\u00e7in tercih edilir.<\/p>\n<pre><code class=\"language-bash\">git tag -a v1.0.0 -m \"S\u00fcr\u00fcm 1.0.0 yay\u0131nland\u0131\"<\/code><\/pre>\n<p>    Varsay\u0131lan olarak, etiketler HEAD'in (mevcut commit) \u00fczerine yerle\u015ftirilir. E\u011fer ge\u00e7mi\u015fteki bir commit'e etiket eklemek isterseniz, commit ID'sini belirtebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">git tag -a v0.9.0 9fceb02 -m \"\u0130lk beta s\u00fcr\u00fcm\u00fc\"<\/code><\/pre>\n<h3>Etiketleri G\u00f6r\u00fcnt\u00fcleme<\/h3>\n<p>Mevcut etiketleri listelemek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">git tag<\/code><\/pre>\n<p>Belirli bir desene uyan etiketleri aramak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">git tag -l \"v1.0.*\"<\/code><\/pre>\n<p>Bir etiketin detaylar\u0131n\u0131 g\u00f6rmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">git show v1.0.0<\/code><\/pre>\n<h3>Etiketleri Uzak Depoya G\u00f6nderme<\/h3>\n<p>Varsay\u0131lan olarak, <code>git push<\/code> komutu etiketleri uzak depoya g\u00f6ndermez. Etiketleri uzak depoya g\u00f6ndermek i\u00e7in a\u00e7\u0131k\u00e7a belirtmeniz gerekir:<\/p>\n<pre><code class=\"language-bash\">git push origin v1.0.0          # Belirli bir etiketi g\u00f6nder\ngit push origin --tags          # T\u00fcm yerel etiketleri g\u00f6nder<\/code><\/pre>\n<p>Bir etiketi silmek i\u00e7in (yerelden ve uzaktan):<\/p>\n<pre><code class=\"language-bash\">git tag -d v1.0.0                   # Yerel etiketi sil\ngit push origin :refs\/tags\/v1.0.0   # Uzak etiketi sil<\/code><\/pre>\n<h2>Geli\u015fmi\u015f Konular ve En \u0130yi Uygulamalar<\/h2>\n<p>Git'i daha verimli kullanmak ve projelerinizi daha iyi y\u00f6netmek i\u00e7in baz\u0131 geli\u015fmi\u015f konular\u0131 ve en iyi uygulamalar\u0131 bilmek faydal\u0131d\u0131r.<\/p>\n<h3><code>.gitignore<\/code> Dosyas\u0131<\/h3>\n<p>Projenizde Git taraf\u0131ndan takip edilmesini istemedi\u011finiz dosyalar veya dizinler olabilir (\u00f6rne\u011fin, derleme \u00e7\u0131kt\u0131lar\u0131, g\u00fcnl\u00fck dosyalar\u0131, ba\u011f\u0131ml\u0131l\u0131k klas\u00f6rleri, ki\u015fisel ayar dosyalar\u0131). Bu t\u00fcr \u00f6\u011feleri <code>.gitignore<\/code> adl\u0131 bir dosyaya ekleyerek Git'in bunlar\u0131 g\u00f6rmezden gelmesini sa\u011flayabilirsiniz.<\/p>\n<p>\u00d6rnek <code>.gitignore<\/code> i\u00e7eri\u011fi:<\/p>\n<pre><code class=\"language-\"># Log dosyalar\u0131\n*.log\nlogs\/\n\n<h2>Derleme \u00e7\u0131kt\u0131lar\u0131<\/h2>\n*.o\n*.a\n*.class\nbuild\/\ndist\/\n\n<h2>Ba\u011f\u0131ml\u0131l\u0131k klas\u00f6rleri (Node.js i\u00e7in)<\/h2>\nnode_modules\/\n\n<h2>Edit\u00f6r veya IDE dosyalar\u0131<\/h2>\n.vscode\/\n.idea\/\n\n<h2>\u0130\u015fletim sistemi dosyalar\u0131<\/h2>\n.DS_Store\nThumbs.db<\/code><\/pre>\n<p><code>.gitignore<\/code> dosyas\u0131, projenizin k\u00f6k dizininde yer almal\u0131d\u0131r. Git, bu dosyay\u0131 okur ve listelenen desenlere uyan dosyalar\u0131 ve dizinleri <code>git add<\/code> komutuyla bile haz\u0131rl\u0131k alan\u0131na eklemez.<\/p>\n<h3>Git \u0130\u015f Ak\u0131\u015f Modelleri (Feature Branch, Gitflow, GitHub Flow)<\/h3>\n<p>B\u00fcy\u00fck ekiplerde veya karma\u015f\u0131k projelerde, Git'in dallanma ve birle\u015ftirme \u00f6zelliklerini nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 tan\u0131mlayan belirli i\u015f ak\u0131\u015f modelleri benimsemek, tutarl\u0131l\u0131\u011f\u0131 ve d\u00fczeni sa\u011flar.<\/p>\n<p>*   <strong>Feature Branch Workflow:<\/strong> En basit ve yayg\u0131n i\u015f ak\u0131\u015f\u0131d\u0131r. <code>main<\/code> (veya <code>master<\/code>) dal\u0131 her zaman kararl\u0131d\u0131r. Yeni bir \u00f6zellik veya hata d\u00fczeltmesi i\u00e7in <code>main<\/code> daldan yeni bir dal olu\u015fturulur. \u0130\u015f bitince bu dal <code>main<\/code>'e birle\u015ftirilir ve silinir.<br \/>\n*   <strong>GitHub Flow:<\/strong> Feature Branch Workflow'a benzer ancak daha basitle\u015ftirilmi\u015ftir. Genellikle sadece bir ana dal (<code>main<\/code>) vard\u0131r. T\u00fcm yeni \u00f6zellikler do\u011frudan <code>main<\/code>'den dallan\u0131r ve tamamland\u0131\u011f\u0131nda <code>main<\/code>'e geri birle\u015ftirilir. Genellikle s\u00fcrekli entegrasyon\/s\u00fcrekli da\u011f\u0131t\u0131m (CI\/CD) ile birlikte kullan\u0131l\u0131r.<br \/>\n*   <strong>Gitflow Workflow:<\/strong> Daha karma\u015f\u0131k ve b\u00fcy\u00fck projeler i\u00e7in tasarlanm\u0131\u015ft\u0131r. <code>main<\/code> ve <code>develop<\/code> olmak \u00fczere iki ana uzun \u00f6m\u00fcrl\u00fc dal\u0131 vard\u0131r. <code>main<\/code> dal\u0131 her zaman \u00fcretimde olan s\u00fcr\u00fcm\u00fc temsil ederken, <code>develop<\/code> dal\u0131 bir sonraki s\u00fcr\u00fcm\u00fcn birle\u015ftirildi\u011fi dald\u0131r. Ayr\u0131ca <code>feature<\/code>, <code>release<\/code> ve <code>hotfix<\/code> gibi k\u0131sa \u00f6m\u00fcrl\u00fc dallar\u0131 da i\u00e7erir. Daha fazla dallanma ve birle\u015ftirme kural\u0131 gerektirir.<\/p>\n<p>Se\u00e7ti\u011finiz i\u015f ak\u0131\u015f\u0131, ekibinizin b\u00fcy\u00fckl\u00fc\u011f\u00fcne, projenizin karma\u015f\u0131kl\u0131\u011f\u0131na ve da\u011f\u0131t\u0131m s\u0131kl\u0131\u011f\u0131na ba\u011fl\u0131 olmal\u0131d\u0131r.<\/p>\n<h3>Rebase vs. Merge<\/h3>\n<p>Dallar\u0131 birle\u015ftirmenin iki ana yolu vard\u0131r: <code>git merge<\/code> ve <code>git rebase<\/code>.<\/p>\n<p>*   <strong><code>git merge<\/code>:<\/strong> \u0130ki dal\u0131n ge\u00e7mi\u015fini birle\u015ftirerek yeni bir birle\u015ftirme commit'i olu\u015fturur. Bu, dallar\u0131n ge\u00e7mi\u015fini korur ve yap\u0131lan birle\u015ftirme i\u015flemini a\u00e7\u0131k\u00e7a g\u00f6sterir. Daha g\u00fcvenli bir se\u00e7enektir, \u00e7\u00fcnk\u00fc ge\u00e7mi\u015fi de\u011fi\u015ftirmez.<br \/>\n*   <strong><code>git rebase<\/code>:<\/strong> Bir dal\u0131n commit'lerini ba\u015fka bir dal\u0131n \u00fczerine \"yeniden temel al\u0131r\". Bu, dal\u0131n\u0131zdaki commit'leri sanki hedef dal\u0131n en son commit'inden ba\u015flam\u0131\u015f gibi yeniden yazar. Tarih\u00e7eyi daha do\u011frusal ve temiz hale getirir, ancak commit ID'lerini de\u011fi\u015ftirir.<\/p>\n<pre><code class=\"language-bash\"># main dal\u0131na ge\u00e7\ngit checkout main\n<h2>feature dal\u0131n\u0131 main \u00fczerine rebase et<\/h2>\ngit rebase feature<\/code><\/pre>\n<p><code>git rebase<\/code> komutunu, hen\u00fcz uzak depoya g\u00f6nderilmemi\u015f (yerel) dallar \u00fczerinde kullanmak en iyisidir. Uzak depoya g\u00f6nderilmi\u015f commit'leri rebase etmek, tak\u0131m arkada\u015flar\u0131n\u0131z i\u00e7in sorunlara yol a\u00e7abilir \u00e7\u00fcnk\u00fc ge\u00e7mi\u015fi de\u011fi\u015ftirirsiniz. Genel kural, <code>rebase<\/code>'i yerel temizlik i\u00e7in, <code>merge<\/code>'i ise kamuya a\u00e7\u0131k ge\u00e7mi\u015fi birle\u015ftirmek i\u00e7in kullanmakt\u0131r.<\/p>\n<h3>Alt Mod\u00fcller (Submodules)<\/h3>\n<p>Bir Git deposunu ba\u015fka bir Git deposunun alt dizini olarak dahil etmeniz gerekti\u011finde Git alt mod\u00fcllerini kullanabilirsiniz. Bu, bir projede harici bir k\u00fct\u00fcphaneyi veya ba\u015fka bir Git projesini ba\u011f\u0131ml\u0131l\u0131k olarak y\u00f6netmek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">git submodule add https:\/\/github.com\/ornek\/kutuphane.git lib\/kutuphane<\/code><\/pre>\n<p>Alt mod\u00fcllerin kendine \u00f6zg\u00fc karma\u015f\u0131kl\u0131klar\u0131 vard\u0131r ve dikkatli y\u00f6netilmesi gerekir.<\/p>\n<h3>Git Hook'lar\u0131<\/h3>\n<p>Git Hook'lar\u0131, Git'teki belirli olaylar (\u00f6rne\u011fin, commit yapmadan \u00f6nce, push yapmadan \u00f6nce) ger\u00e7ekle\u015fti\u011finde otomatik olarak \u00e7al\u0131\u015fan \u00f6zel betiklerdir. Bu betikler, kod kalitesini zorlamak, testleri \u00e7al\u0131\u015ft\u0131rmak veya belirli i\u015f ak\u0131\u015flar\u0131n\u0131 otomatikle\u015ftirmek i\u00e7in kullan\u0131labilir. Hook'lar <code>.git\/hooks<\/code> dizininde bulunur.<\/p>\n<p>\u00d6rnek olarak, bir <code>pre-commit<\/code> hook'u, bir commit yap\u0131lmadan \u00f6nce kodunuzu bi\u00e7imlendirebilir veya linting kontrol\u00fc yapabilir.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Git, modern yaz\u0131l\u0131m geli\u015ftirmenin vazge\u00e7ilmez bir arac\u0131d\u0131r. Bu rehber, Git'in temel kavramlar\u0131ndan ba\u015flayarak dallanma, birle\u015ftirme, uzak depolarla \u00e7al\u0131\u015fma ve ge\u00e7mi\u015fi y\u00f6netme gibi kritik konular\u0131 kapsayan kapsaml\u0131 bir referans sunmu\u015ftur. Her bir komutun ne i\u015fe yarad\u0131\u011f\u0131n\u0131, nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 ve hangi durumlarda tercih edilmesi gerekti\u011fini anlamak, Git'i etkin bir \u015fekilde kullanman\u0131n anahtar\u0131d\u0131r.<\/p>\n<p>Unutmay\u0131n ki Git'i \u00f6\u011frenmek bir s\u00fcre\u00e7tir ve pratikle peki\u015fir. Kendi projelerinizde farkl\u0131 komutlar\u0131 denemekten \u00e7ekinmeyin, ancak \u00f6zellikle ge\u00e7mi\u015fi de\u011fi\u015ftiren komutlar\u0131 (\u00f6rne\u011fin <code>git reset --hard<\/code>, <code>git rebase<\/code>) kullan\u0131rken dikkatli olun ve \u00f6nemli de\u011fi\u015fiklikler yapmadan \u00f6nce bir yedek almay\u0131 veya bir dalda \u00e7al\u0131\u015fmay\u0131 al\u0131\u015fkanl\u0131k haline getirin.<\/p>\n<p>Git'in g\u00fcc\u00fc, sadece bireysel geli\u015ftiricilerin de\u011fil, ayn\u0131 zamanda b\u00fcy\u00fck ekiplerin i\u015fbirli\u011fini, verimlili\u011fini ve proje kalitesini art\u0131rmas\u0131ndan gelir. Bu rehberdeki bilgileri kullanarak, Git'i projelerinizde g\u00fcvenle uygulayabilir ve s\u00fcr\u00fcm kontrol\u00fcn\u00fc ustaca y\u00f6netebilirsiniz. Git d\u00fcnyas\u0131nda ke\u015ffedilecek daha bir\u00e7ok \u00f6zellik ve geli\u015fmi\u015f teknik bulunmaktad\u0131r; \u00f6\u011frenmeye devam edin ve Git'in sundu\u011fu t\u00fcm olanaklardan yararlan\u0131n!<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Git Nas\u0131l Kullan\u0131l\u0131r: Kapsaml\u0131 Bir Referans Rehberi\nGiri\u015f: S\u00fcr\u00fcm Kontrol Sistemleri ve Git\nYaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, projeler genell","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-34676","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>Git Nas\u0131l Kullan\u0131l\u0131r: Kapsaml\u0131 Bir Referans Rehberi - 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\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Git Nas\u0131l Kullan\u0131l\u0131r: Kapsaml\u0131 Bir Referans Rehberi\" \/>\n<meta property=\"og:description\" content=\"Git Nas\u0131l Kullan\u0131l\u0131r: Kapsaml\u0131 Bir Referans Rehberi Giri\u015f: S\u00fcr\u00fcm Kontrol Sistemleri ve Git Yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, projeler genell\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-20T13:41:25+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=\"26 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Git Nas\u0131l Kullan\u0131l\u0131r: Kapsaml\u0131 Bir Referans Rehberi\",\"datePublished\":\"2025-11-20T13:41:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/\"},\"wordCount\":4552,\"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\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/\",\"name\":\"Git Nas\u0131l Kullan\u0131l\u0131r: Kapsaml\u0131 Bir Referans Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-20T13:41:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Git Nas\u0131l Kullan\u0131l\u0131r: Kapsaml\u0131 Bir Referans Rehberi\"}]},{\"@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":"Git Nas\u0131l Kullan\u0131l\u0131r: Kapsaml\u0131 Bir Referans Rehberi - 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\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Git Nas\u0131l Kullan\u0131l\u0131r: Kapsaml\u0131 Bir Referans Rehberi","og_description":"Git Nas\u0131l Kullan\u0131l\u0131r: Kapsaml\u0131 Bir Referans Rehberi Giri\u015f: S\u00fcr\u00fcm Kontrol Sistemleri ve Git Yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, projeler genell","og_url":"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-20T13:41:25+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"26 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Git Nas\u0131l Kullan\u0131l\u0131r: Kapsaml\u0131 Bir Referans Rehberi","datePublished":"2025-11-20T13:41:25+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/"},"wordCount":4552,"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\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/","name":"Git Nas\u0131l Kullan\u0131l\u0131r: Kapsaml\u0131 Bir Referans Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-20T13:41:25+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/git-nasil-kullanilir-kapsamli-bir-referans-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Git Nas\u0131l Kullan\u0131l\u0131r: Kapsaml\u0131 Bir Referans Rehberi"}]},{"@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\/34676","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=34676"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34676\/revisions"}],"predecessor-version":[{"id":34677,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34676\/revisions\/34677"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}