{"id":37721,"date":"2026-01-13T14:30:37","date_gmt":"2026-01-13T11:30:37","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/"},"modified":"2026-01-13T14:30:37","modified_gmt":"2026-01-13T11:30:37","slug":"gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/","title":{"rendered":"Git&#8217;in Kalbine Yolculuk: Nas\u0131l \u00c7al\u0131\u015f\u0131r ve .git Klas\u00f6r\u00fcn\u00fcn Rol\u00fc"},"content":{"rendered":"<h2>Git&#8217;in Kalbine Yolculuk: Nas\u0131l \u00c7al\u0131\u015f\u0131r ve .git Klas\u00f6r\u00fcn\u00fcn Rol\u00fc<\/h2>\n<p>Git, modern yaz\u0131l\u0131m geli\u015ftirmenin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015f, da\u011f\u0131t\u0131k bir s\u00fcr\u00fcm kontrol sistemidir. Milyonlarca geli\u015ftiricinin projelerini y\u00f6netmek, i\u015fbirli\u011fi yapmak ve de\u011fi\u015fiklikleri takip etmek i\u00e7in kulland\u0131\u011f\u0131 bu g\u00fc\u00e7l\u00fc arac\u0131n sihrini anlamak, \u00e7o\u011fu zaman y\u00fczeysel komut bilgisiyle s\u0131n\u0131rl\u0131 kal\u0131r. Ancak Git&#8217;in ger\u00e7ek g\u00fcc\u00fc ve esnekli\u011fi, perde arkas\u0131nda, yani her Git deposunun kalbinde yer alan <code>.git<\/code> klas\u00f6r\u00fcn\u00fcn derinliklerinde yatar. Bu makalede, Git&#8217;in i\u00e7 i\u015fleyi\u015fine dalacak, <code>.git<\/code> klas\u00f6r\u00fcn\u00fcn gizemini \u00e7\u00f6zecek ve Git&#8217;in verileri nas\u0131l saklad\u0131\u011f\u0131n\u0131, de\u011fi\u015fiklikleri nas\u0131l takip etti\u011fini ve dallanma gibi karma\u015f\u0131k operasyonlar\u0131 nas\u0131l ger\u00e7ekle\u015ftirdi\u011fini ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<h3>Git Nedir ve Neden \u00d6nemlidir?<\/h3>\n<p>Git, Linus Torvalds taraf\u0131ndan 2005 y\u0131l\u0131nda Linux \u00e7ekirde\u011fi geli\u015ftirme s\u00fcrecini y\u00f6netmek i\u00e7in olu\u015fturulmu\u015f, \u00fccretsiz ve a\u00e7\u0131k kaynakl\u0131 bir da\u011f\u0131t\u0131k s\u00fcr\u00fcm kontrol sistemidir (DVCS). Projelerdeki de\u011fi\u015fiklikleri izlemek, farkl\u0131 s\u00fcr\u00fcmler aras\u0131nda ge\u00e7i\u015f yapmak ve birden fazla ki\u015finin ayn\u0131 proje \u00fczerinde e\u015f zamanl\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak amac\u0131yla tasarlanm\u0131\u015ft\u0131r.<\/p>\n<h4>S\u00fcr\u00fcm Kontrol Sistemleri ve Git&#8217;in Yeri<\/h4>\n<p>S\u00fcr\u00fcm kontrol sistemleri (VCS), zaman i\u00e7indeki dosya ve dizin de\u011fi\u015fikliklerini y\u00f6netmek i\u00e7in kullan\u0131lan yaz\u0131l\u0131mlard\u0131r. Merkezi (SVN, CVS) ve da\u011f\u0131t\u0131k (Git, Mercurial) olmak \u00fczere iki ana kategoriye ayr\u0131l\u0131rlar. Git, da\u011f\u0131t\u0131k yap\u0131s\u0131yla \u00f6ne \u00e7\u0131kar; her geli\u015ftirici, projenin t\u00fcm ge\u00e7mi\u015fini i\u00e7eren tam bir kopyas\u0131na (depo) sahiptir. Bu, \u00e7evrimd\u0131\u015f\u0131 \u00e7al\u0131\u015fmaya olanak tan\u0131r ve merkezi bir sunucunun \u00e7\u00f6kmesi durumunda veri kayb\u0131 riskini minimize eder.<\/p>\n<h4>Da\u011f\u0131t\u0131k Yap\u0131n\u0131n Avantajlar\u0131<\/h4>\n<p>Git&#8217;in da\u011f\u0131t\u0131k mimarisi, bir\u00e7ok avantaj sunar:<\/p>\n<ul>\n<li><b>\u00c7evrimd\u0131\u015f\u0131 \u00c7al\u0131\u015fma:<\/b> Her geli\u015ftirici kendi yerel deposuna sahip oldu\u011fu i\u00e7in internet ba\u011flant\u0131s\u0131 olmadan bile commit yapabilir, branch olu\u015fturabilir ve merge i\u015flemleri ger\u00e7ekle\u015ftirebilir.<\/li>\n<li><b>Y\u00fcksek Performans:<\/b> \u00c7o\u011fu i\u015flem yerel olarak ger\u00e7ekle\u015ftirildi\u011fi i\u00e7in \u00e7ok h\u0131zl\u0131d\u0131r.<\/li>\n<li><b>Veri G\u00fcvenli\u011fi:<\/b> Projenin tam ge\u00e7mi\u015fi birden fazla yerde yedeklendi\u011fi i\u00e7in veri kayb\u0131 riski d\u00fc\u015f\u00fckt\u00fcr.<\/li>\n<li><b>Esneklik:<\/b> Farkl\u0131 i\u015f ak\u0131\u015flar\u0131n\u0131 destekler ve karma\u015f\u0131k dallanma stratejileri i\u00e7in idealdir.<\/li>\n<\/ul>\n<h4>Temel Git Kavramlar\u0131: Repository, Commit, Branch<\/h4>\n<p>Git&#8217;i anlamak i\u00e7in baz\u0131 temel kavramlar\u0131 bilmek gerekir:<\/p>\n<ul>\n<li><b>Repository (Depo):<\/b> Projenizin t\u00fcm dosyalar\u0131n\u0131, revizyon ge\u00e7mi\u015fini ve Git&#8217;in meta verilerini i\u00e7eren ana dizindir. Her depo, k\u00f6k dizininde bir <code>.git<\/code> klas\u00f6r\u00fc bar\u0131nd\u0131r\u0131r.<\/li>\n<li><b>Commit:<\/b> Projenin belirli bir an\u0131ndaki anl\u0131k g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc (snapshot) temsil eden bir kay\u0131tt\u0131r. Her commit, bir SHA-1 hash&#8217;i ile benzersiz \u015fekilde tan\u0131mlan\u0131r ve yazar, tarih, mesaj gibi meta veriler i\u00e7erir.<\/li>\n<li><b>Branch (Dal):<\/b> Geli\u015ftirme ak\u0131\u015f\u0131n\u0131n birbirinden ba\u011f\u0131ms\u0131z olarak ilerlemesini sa\u011flayan i\u015faret\u00e7ilerdir. Yeni \u00f6zellikler geli\u015ftirmek veya hatalar\u0131 d\u00fczeltmek i\u00e7in ana kod taban\u0131ndan ayr\u0131lman\u0131za olanak tan\u0131r.<\/li>\n<\/ul>\n<h3>.git Klas\u00f6r\u00fc: Git&#8217;in Beyni<\/h3>\n<p>Bir Git deposunun kalbi ve beyni, projenin k\u00f6k dizininde yer alan <code>.git<\/code> klas\u00f6r\u00fcd\u00fcr. Bu klas\u00f6r, projenizin t\u00fcm s\u00fcr\u00fcm ge\u00e7mi\u015fini, yap\u0131land\u0131rma ayarlar\u0131n\u0131, nesne veritaban\u0131n\u0131 ve Git&#8217;in \u00e7al\u0131\u015fmas\u0131 i\u00e7in gerekli t\u00fcm meta verileri bar\u0131nd\u0131r\u0131r. \u00c7al\u0131\u015fma dizininizdeki dosyalar\u0131n kendisi Git deposunun bir par\u00e7as\u0131 de\u011fildir; sadece <code>.git<\/code> klas\u00f6r\u00fcndeki verilerle ili\u015fkilidir.<\/p>\n<h4>.git Klas\u00f6r\u00fcn\u00fcn Yap\u0131s\u0131 ve Ana Bile\u015fenleri<\/h4>\n<p>Bir <code>.git<\/code> klas\u00f6r\u00fcn\u00fcn temel yap\u0131s\u0131 \u015f\u00f6yledir:<\/p>\n<pre><code>\n.git\/\n\u251c\u2500\u2500 HEAD\n\u251c\u2500\u2500 config\n\u251c\u2500\u2500 description\n\u251c\u2500\u2500 hooks\/\n\u251c\u2500\u2500 info\/\n\u2502   \u2514\u2500\u2500 exclude\n\u251c\u2500\u2500 objects\/\n\u2502   \u251c\u2500\u2500 info\/\n\u2502   \u2514\u2500\u2500 pack\/\n\u2514\u2500\u2500 refs\/\n    \u251c\u2500\u2500 heads\/\n    \u2514\u2500\u2500 tags\/\n<\/pre>\n<p><\/code><br \/>\nBu yap\u0131n\u0131n her bir bile\u015feni, Git'in farkl\u0131 bir y\u00f6n\u00fcn\u00fc y\u00f6netir.<\/p>\n<h4><code>HEAD<\/code> Dosyas\u0131: Mevcut Konumunuz<\/h4>\n<p><code>HEAD<\/code> dosyas\u0131, o an \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131z dal\u0131 veya commit'i g\u00f6steren bir referanst\u0131r. Genellikle bir dal\u0131 i\u015faret eder (\u00f6rne\u011fin, <code>ref: refs\/heads\/main<\/code>). Bir dal \u00fczerinde \u00e7al\u0131\u015f\u0131rken, <code>HEAD<\/code> o dal\u0131n en son commit'ini g\u00f6sterir. Detached HEAD durumunda ise do\u011frudan bir commit'i i\u015faret eder.<\/p>\n<h4><code>config<\/code> Dosyas\u0131: Proje Ayarlar\u0131<\/h4>\n<p><code>config<\/code> dosyas\u0131, depoya \u00f6zel yap\u0131land\u0131rma ayarlar\u0131n\u0131 i\u00e7erir. Bu ayarlar, kullan\u0131c\u0131 ad\u0131n\u0131z ve e-posta adresinizden, uzak depolar\u0131n URL'lerine, merge stratejilerine kadar \u00e7e\u015fitli bilgileri bar\u0131nd\u0131rabilir. \u00d6rne\u011fin:<\/p>\n<pre><code>\n[core]\n    repositoryformatversion = 0\n    filemode = true\n    bare = false\n    logallrefupdates = true\n[remote \"origin\"]\n    url = https:\/\/github.com\/kullanici\/repo.git\n    fetch = +refs\/heads\/*:refs\/remotes\/origin\/*\n[branch \"main\"]\n    remote = origin\n    merge = refs\/heads\/main\n<\/pre>\n<p><\/code><\/p>\n<h4><code>description<\/code> ve <code>info\/exclude<\/code> Dosyalar\u0131<\/h4>\n<p>*   <code>description<\/code>: Bu dosya, <code>gitweb<\/code> gibi ara\u00e7lar taraf\u0131ndan deponun k\u0131sa bir a\u00e7\u0131klamas\u0131 olarak kullan\u0131l\u0131r. Genellikle tek bir sat\u0131r i\u00e7erir.<br \/>\n*   <code>info\/exclude<\/code>: Bu dosya, <code>.gitignore<\/code> dosyas\u0131na benzer \u015fekilde, Git taraf\u0131ndan takip edilmemesi gereken dosyalar\u0131 belirtir. Ancak <code>.gitignore<\/code>'dan farkl\u0131 olarak, bu dosya deponun bir par\u00e7as\u0131 de\u011fildir ve ba\u015fkalar\u0131yla payla\u015f\u0131lmaz. Yerel olarak g\u00f6z ard\u0131 edilecek dosyalar i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h3>Nesne Veritaban\u0131: Git'in Temeli (<code>objects<\/code> Klas\u00f6r\u00fc)<\/h3>\n<p><code>.git\/objects<\/code> klas\u00f6r\u00fc, Git'in t\u00fcm verilerini depolad\u0131\u011f\u0131 ana yerdir. Git, projenizin her bir dosyas\u0131n\u0131, dizin yap\u0131s\u0131n\u0131 ve commit ge\u00e7mi\u015fini \"nesneler\" olarak saklar. Bu nesneler, SHA-1 hash'leri ile adland\u0131r\u0131l\u0131r ve i\u00e7eriklerine g\u00f6re s\u0131k\u0131\u015ft\u0131r\u0131l\u0131r. Git'in temelinde yatan i\u00e7erik adreslenebilirli\u011fi prensibi burada devreye girer: bir nesnenin i\u00e7eri\u011fi de\u011fi\u015firse, SHA-1 hash'i de de\u011fi\u015fir ve bu yeni bir nesne olarak kaydedilir.<\/p>\n<h4>Git Nesne Tipleri: Blob, Tree, Commit, Tag<\/h4>\n<p>Git'in d\u00f6rt ana nesne tipi vard\u0131r:<\/p>\n<ol>\n<li><b>Blob (Binary Large Object):<\/b> \u00c7al\u0131\u015fma dizininizdeki dosyalar\u0131n i\u00e7eri\u011fini temsil eder. Her dosya s\u00fcr\u00fcm\u00fc, bir blob nesnesi olarak saklan\u0131r.<\/li>\n<li><b>Tree (A\u011fa\u00e7):<\/b> Bir dizin yap\u0131s\u0131n\u0131 temsil eder. Dizin i\u00e7indeki dosyalar\u0131n (blob'lar) ve alt dizinlerin (di\u011fer tree'ler) SHA-1 hash'lerini ve dosya\/dizin adlar\u0131n\u0131 i\u00e7erir.<\/li>\n<li><b>Commit (Taahh\u00fct):<\/b> Projenin belirli bir an\u0131ndaki anl\u0131k g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc temsil eder. Bir commit nesnesi, yazar, tarih, mesaj, i\u015faret etti\u011fi tree nesnesinin SHA-1'i ve \u00f6nceki commit'lerin (parent commit'ler) SHA-1'lerini i\u00e7erir.<\/li>\n<li><b>Tag (Etiket):<\/b> Belirli bir commit'i i\u015faretlemek i\u00e7in kullan\u0131l\u0131r, genellikle \u00f6nemli s\u00fcr\u00fcmleri (v1.0, v2.0 gibi) i\u015faretlemek i\u00e7in kullan\u0131l\u0131r. \u0130ki t\u00fcr tag vard\u0131r: hafif (lightweight) ve a\u00e7\u0131klamal\u0131 (annotated). A\u00e7\u0131klamal\u0131 tag'ler kendi ba\u015flar\u0131na bir nesnedir ve yazar, tarih, mesaj gibi meta veriler i\u00e7erir.<\/li>\n<\/ol>\n<h4>Nesnelerin Saklanma Bi\u00e7imi: SHA-1 ve S\u0131k\u0131\u015ft\u0131rma<\/h4>\n<p>Her Git nesnesi, i\u00e7eri\u011finin SHA-1 hash'i ile adland\u0131r\u0131l\u0131r. Bu hash'in ilk iki karakteri, nesnenin i\u00e7inde bulundu\u011fu alt dizinin ad\u0131n\u0131 olu\u015fturur, geri kalan 38 karakter ise dosya ad\u0131d\u0131r. \u00d6rne\u011fin, <code>d670460b4b4aece13fd2022b07e296e492c30765<\/code> hash'ine sahip bir nesne, <code>.git\/objects\/d6\/70460b4b4aece13fd2022b07e296e492c30765<\/code> yolunda bulunur. Nesneler, disk alan\u0131ndan tasarruf etmek i\u00e7in zlib kullan\u0131larak s\u0131k\u0131\u015ft\u0131r\u0131l\u0131r.<\/p>\n<h4><code>git cat-file<\/code> ile Nesneleri \u0130nceleme<\/h4>\n<p><code>git cat-file<\/code> komutu, Git nesnelerinin i\u00e7eri\u011fini ve t\u00fcr\u00fcn\u00fc incelemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<ul>\n<li>Bir nesnenin t\u00fcr\u00fcn\u00fc g\u00f6rmek i\u00e7in: <code>git cat-file -t <SHA-1><\/code><\/li>\n<li>Bir nesnenin i\u00e7eri\u011fini g\u00f6rmek i\u00e7in: <code>git cat-file -p <SHA-1><\/code><\/li>\n<\/ul>\n<p>\u00d6rne\u011fin, bir commit'in i\u00e7eri\u011fini g\u00f6rmek i\u00e7in:<\/p>\n<pre><code>\n$ git cat-file -p 87e9c...\ntree 72a8c...\nparent 1b2f0...\nauthor John Doe <john.doe@example.com> 1678886400 +0300\ncommitter John Doe <john.doe@example.com> 1678886400 +0300\n\nInitial commit\n<\/pre>\n<p><\/code><\/p>\n<h3>Referanslar ve Dallanma (<code>refs<\/code> Klas\u00f6r\u00fc)<\/h3>\n<p>Git'in dallanma (branching) ve etiketleme (tagging) yetenekleri, <code>.git\/refs<\/code> klas\u00f6r\u00fcnde tutulan referanslar sayesinde m\u00fcmk\u00fcn olur. Referanslar, belirli commit'lere i\u015faret eden basit dosyalard\u0131r.<\/p>\n<h4>Branch'ler: <code>refs\/heads<\/code><\/h4>\n<p><code>refs\/heads<\/code> klas\u00f6r\u00fc, yerel dallar\u0131n\u0131z\u0131n her birini temsil eden dosyalar\u0131 i\u00e7erir. Her dosyan\u0131n ad\u0131 bir dal\u0131n ad\u0131d\u0131r (\u00f6rne\u011fin, <code>main<\/code>, <code>feature-x<\/code>), i\u00e7eri\u011fi ise o dal\u0131n i\u015faret etti\u011fi en son commit'in SHA-1 hash'idir.<\/p>\n<pre><code>\n.git\/refs\/\n\u251c\u2500\u2500 heads\/\n\u2502   \u251c\u2500\u2500 main  (i\u00e7eri\u011fi: 87e9c... - main dal\u0131n\u0131n son commit'i)\n\u2502   \u2514\u2500\u2500 feature-x (i\u00e7eri\u011fi: a1b2c... - feature-x dal\u0131n\u0131n son commit'i)\n\u2514\u2500\u2500 tags\/\n<\/pre>\n<p><\/code><br \/>\nBir dalda yeni bir commit yapt\u0131\u011f\u0131n\u0131zda, ilgili dosyadaki SHA-1 hash'i otomatik olarak g\u00fcncellenir.<\/p>\n<h4>Tag'ler: <code>refs\/tags<\/code><\/h4>\n<p><code>refs\/tags<\/code> klas\u00f6r\u00fc, projenizdeki etiketleri (tag'leri) i\u00e7erir. T\u0131pk\u0131 dallar gibi, etiket dosyalar\u0131 da i\u015faret ettikleri commit'in SHA-1 hash'ini bar\u0131nd\u0131r\u0131r. A\u00e7\u0131klamal\u0131 tag'ler ise do\u011frudan bir commit'i de\u011fil, kendi tag nesnelerini i\u015faret eder.<\/p>\n<h4>Uzak Referanslar: <code>refs\/remotes<\/code><\/h4>\n<p>Uzak depolarla etkile\u015fim kurdu\u011funuzda, Git bu uzak depolardaki dallar\u0131 izlemek i\u00e7in <code>refs\/remotes<\/code> klas\u00f6r\u00fcn\u00fc kullan\u0131r. \u00d6rne\u011fin, <code>origin<\/code> adl\u0131 bir uzak deponuz varsa, <code>refs\/remotes\/origin\/main<\/code> dosyas\u0131, <code>origin<\/code> deposundaki <code>main<\/code> dal\u0131n\u0131n en son commit'ini g\u00f6sterir. Bu, yerel ve uzak dallar\u0131 birbirinden ay\u0131rman\u0131za ve <code>git fetch<\/code> gibi komutlarla uzak depodaki de\u011fi\u015fiklikleri takip etmenize olanak tan\u0131r.<\/p>\n<h3>Dizin ve \u00c7al\u0131\u015fma Alan\u0131 Y\u00f6netimi (<code>index<\/code>, <code>logs<\/code>, <code>hooks<\/code> Klas\u00f6rleri)<\/h3>\n<p><code>.git<\/code> klas\u00f6r\u00fc, sadece ge\u00e7mi\u015fi de\u011fil, ayn\u0131 zamanda mevcut \u00e7al\u0131\u015fma durumunuzu ve gelecekteki otomasyonlar\u0131 y\u00f6netmek i\u00e7in de \u00e7e\u015fitli bile\u015fenler bar\u0131nd\u0131r\u0131r.<\/p>\n<h4><code>index<\/code> (Staging Area): De\u011fi\u015fikliklerin Haz\u0131rlanmas\u0131<\/h4>\n<p><code>.git\/index<\/code> dosyas\u0131, \"staging area\" veya \"cache\" olarak da bilinen Git dizinini temsil eder. Bu dosya, bir sonraki commit'e dahil edilecek de\u011fi\u015fikliklerin bir listesini tutar. <code>git add<\/code> komutu, \u00e7al\u0131\u015fma dizininizdeki dosyalar\u0131n anl\u0131k g\u00f6r\u00fcnt\u00fclerini al\u0131r ve bu bilgiyi <code>index<\/code> dosyas\u0131na yazar. <code>git commit<\/code> komutu ise bu <code>index<\/code> dosyas\u0131ndaki anl\u0131k g\u00f6r\u00fcnt\u00fcy\u00fc kullanarak yeni bir commit olu\u015fturur. <code>index<\/code> dosyas\u0131, ikili (binary) bir formatta saklan\u0131r ve dosya yollar\u0131, modlar\u0131 ve blob nesnelerinin SHA-1 hash'lerini i\u00e7erir.<\/p>\n<h4><code>logs<\/code> Klas\u00f6r\u00fc: Referans Ge\u00e7mi\u015fi<\/h4>\n<p><code>logs<\/code> klas\u00f6r\u00fc, Git'in her bir referans\u0131n (dallar, HEAD) ge\u00e7mi\u015fini tuttu\u011fu yerdir. \u00d6rne\u011fin, <code>logs\/HEAD<\/code> dosyas\u0131, <code>HEAD<\/code>'in hangi commit'leri i\u015faret etti\u011fini g\u00f6steren bir ge\u00e7mi\u015f kayd\u0131d\u0131r. <code>logs\/refs\/heads\/main<\/code> ise <code>main<\/code> dal\u0131n\u0131n hangi commit'lere i\u015faret etti\u011finin ge\u00e7mi\u015fini tutar. Bu dosyalar, <code>git reflog<\/code> komutu taraf\u0131ndan kullan\u0131l\u0131r ve bir dal\u0131n veya <code>HEAD<\/code>'in hareket ge\u00e7mi\u015fini g\u00f6rmenizi sa\u011flar, bu da yanl\u0131\u015fl\u0131kla yap\u0131lan de\u011fi\u015fiklikleri geri almak i\u00e7in \u00e7ok faydal\u0131d\u0131r.<\/p>\n<h4><code>hooks<\/code> Klas\u00f6r\u00fc: Otomasyon ve \u00d6zel Komutlar<\/h4>\n<p><code>.git\/hooks<\/code> klas\u00f6r\u00fc, Git olaylar\u0131 (commit \u00f6ncesi, push sonras\u0131 vb.) tetiklendi\u011finde otomatik olarak \u00e7al\u0131\u015fan betikleri bar\u0131nd\u0131r\u0131r. Bu betikler, kod kalitesini kontrol etmek, testleri \u00e7al\u0131\u015ft\u0131rmak veya belirli bir format\u0131 zorlamak gibi g\u00f6revler i\u00e7in kullan\u0131labilir. Varsay\u0131lan olarak, bu klas\u00f6rde \u00f6rnek betikler bulunur (\u00f6rne\u011fin, <code>pre-commit.sample<\/code>). Kendi betiklerinizi olu\u015fturmak i\u00e7in <code>.sample<\/code> uzant\u0131s\u0131n\u0131 kald\u0131rman\u0131z ve beti\u011fi \u00e7al\u0131\u015ft\u0131r\u0131labilir hale getirmeniz yeterlidir.<\/p>\n<pre><code>\n.git\/hooks\/\n\u251c\u2500\u2500 applypatch-msg.sample\n\u251c\u2500\u2500 pre-commit.sample\n\u251c\u2500\u2500 post-commit.sample\n\u2514\u2500\u2500 ...\n<\/pre>\n<p><\/code><\/p>\n<h3>Git \u0130\u015f Ak\u0131\u015f\u0131 ve .git Klas\u00f6r\u00fc \u0130li\u015fkisi<\/h3>\n<p>Git komutlar\u0131, <code>.git<\/code> klas\u00f6r\u00fcndeki \u00e7e\u015fitli dosyalar\u0131 ve dizinleri manip\u00fcle ederek \u00e7al\u0131\u015f\u0131r. Bu ili\u015fkiyi anlamak, Git'in nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131na dair daha derin bir kavray\u0131\u015f sa\u011flar.<\/p>\n<h4><code>git init<\/code> ve .git Klas\u00f6r\u00fcn\u00fcn Olu\u015fumu<\/h4>\n<p>Bir dizini Git deposu haline getiren <code>git init<\/code> komutu, o dizin i\u00e7inde bo\u015f bir <code>.git<\/code> klas\u00f6r\u00fc olu\u015fturur. Bu klas\u00f6r, yukar\u0131da bahsedilen temel dizinleri (<code>objects<\/code>, <code>refs<\/code>, <code>hooks<\/code> vb.) ve dosyalar\u0131 (<code>HEAD<\/code>, <code>config<\/code>) varsay\u0131lan halleriyle olu\u015fturur. Bu andan itibaren, Git bu klas\u00f6r\u00fc kullanarak projenizin ge\u00e7mi\u015fini y\u00f6netmeye ba\u015flar.<\/p>\n<h4><code>git add<\/code>, <code>git commit<\/code> ve Nesne Veritaban\u0131<\/h4>\n<p>*   <code>git add <dosya><\/code>: \u00c7al\u0131\u015fma dizininizdeki bir dosyan\u0131n i\u00e7eri\u011fini okur, SHA-1 hash'ini hesaplar, bu i\u00e7eri\u011fi bir blob nesnesi olarak <code>.git\/objects<\/code> klas\u00f6r\u00fcne yazar ve bu blob'un SHA-1'ini <code>.git\/index<\/code> dosyas\u0131na ekler.<br \/>\n*   <code>git commit -m \"Mesaj\"<\/code>: <code>.git\/index<\/code> dosyas\u0131ndaki bilgileri kullanarak bir tree nesnesi olu\u015fturur. Bu tree nesnesi, o anki dizin yap\u0131n\u0131z\u0131n anl\u0131k g\u00f6r\u00fcnt\u00fcs\u00fcd\u00fcr. Ard\u0131ndan, bu tree nesnesine, \u00f6nceki commit'lere (<code>HEAD<\/code>'in i\u015faret etti\u011fi commit), yazar\/tarih bilgilerine ve commit mesaj\u0131na referans veren yeni bir commit nesnesi olu\u015fturur ve bunu da <code>.git\/objects<\/code> klas\u00f6r\u00fcne yazar. Son olarak, <code>HEAD<\/code>'in i\u015faret etti\u011fi dal\u0131n referans\u0131n\u0131 (\u00f6rne\u011fin, <code>refs\/heads\/main<\/code>) bu yeni commit'in SHA-1'i ile g\u00fcnceller.<\/p>\n<h4><code>git branch<\/code>, <code>git merge<\/code> ve Referans Y\u00f6netimi<\/h4>\n<p>*   <code>git branch <yeni-dal><\/code>: <code>HEAD<\/code>'in i\u015faret etti\u011fi commit'i referans alarak, <code>refs\/heads\/<yeni-dal><\/code> ad\u0131nda yeni bir dosya olu\u015fturur ve i\u00e7ine <code>HEAD<\/code>'in i\u015faret etti\u011fi commit'in SHA-1'ini yazar.<br \/>\n*   <code>git merge <dal><\/code>: Bir dal\u0131 mevcut dala birle\u015ftirdi\u011finizde, Git her iki dal\u0131n ge\u00e7mi\u015fini analiz eder, ortak atay\u0131 bulur ve gerekli birle\u015ftirme i\u015flemlerini yapar. Sonu\u00e7 olarak, yeni bir commit (merge commit) olu\u015fturulur. Bu commit, birle\u015ftirilen dallar\u0131n her ikisini de parent olarak i\u015faret eder ve bu yeni commit'in SHA-1'i mevcut dal\u0131n referans\u0131na yaz\u0131l\u0131r. Bu i\u015flem s\u0131ras\u0131nda yeni blob ve tree nesneleri de <code>.git\/objects<\/code> klas\u00f6r\u00fcne eklenebilir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Git'in <code>.git<\/code> klas\u00f6r\u00fcn\u00fcn i\u00e7 yap\u0131s\u0131n\u0131 anlamak, sadece \"Git nas\u0131l \u00e7al\u0131\u015f\u0131r?\" sorusuna yan\u0131t vermekle kalmaz, ayn\u0131 zamanda Git ile ilgili sorunlar\u0131 giderme, daha karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131 tasarlama ve hatta kendi Git ara\u00e7lar\u0131n\u0131z\u0131 geli\u015ftirme konusunda size e\u015fsiz bir avantaj sa\u011flar. Git'in her \u015feyi bir nesne veritaban\u0131nda saklamas\u0131, referanslarla bu nesnelere i\u015faret etmesi ve indeks arac\u0131l\u0131\u011f\u0131yla de\u011fi\u015fiklikleri y\u00f6netmesi, onun hem performansl\u0131 hem de esnek olmas\u0131n\u0131n temel nedenidir. Bu derinlemesine bak\u0131\u015f, Git'in sadece bir komut sat\u0131r\u0131 arac\u0131 olmad\u0131\u011f\u0131n\u0131, ayn\u0131 zamanda i\u00e7erik adreslenebilirli\u011fi ve y\u00f6nl\u00fc d\u00f6ng\u00fcsel olmayan grafikler (DAG) gibi g\u00fc\u00e7l\u00fc bilgisayar bilimleri prensipleri \u00fczerine in\u015fa edilmi\u015f sofistike bir sistem oldu\u011funu g\u00f6stermektedir.<\/p>\n<h3>SSS (S\u0131k Sorulan Sorular)<\/h3>\n<h4>.git klas\u00f6r\u00fcn\u00fc silersem ne olur?<\/h4>\n<p><code>.git<\/code> klas\u00f6r\u00fcn\u00fc silmek, projenizin t\u00fcm Git ge\u00e7mi\u015fini, dallar\u0131n\u0131, etiketlerini ve yap\u0131land\u0131rma ayarlar\u0131n\u0131 kal\u0131c\u0131 olarak siler. Projeniz art\u0131k bir Git deposu olmaktan \u00e7\u0131kar ve s\u00fcr\u00fcm kontrol\u00fc alt\u0131nda olmaz. Bu i\u015flem geri al\u0131namaz.<\/p>\n<h4>.git klas\u00f6r\u00fc neden bu kadar b\u00fcy\u00fck?<\/h4>\n<p><code>.git<\/code> klas\u00f6r\u00fcn\u00fcn boyutu, projenizin ge\u00e7mi\u015findeki dosya say\u0131s\u0131, boyutu ve de\u011fi\u015fiklik s\u0131kl\u0131\u011f\u0131na ba\u011fl\u0131d\u0131r. Her commit, yeni blob ve tree nesneleri olu\u015fturabilir. \u00d6zellikle b\u00fcy\u00fck ikili dosyalar (resimler, videolar) s\u0131k s\u0131k de\u011fi\u015ftirilirse, <code>.git<\/code> klas\u00f6r\u00fc h\u0131zla b\u00fcy\u00fcyebilir. <code>git gc<\/code> (garbage collect) komutu, kullan\u0131lmayan nesneleri temizleyerek ve nesneleri \"pack file\" ad\u0131 verilen daha verimli bir formatta birle\u015ftirerek klas\u00f6r boyutunu optimize etmeye yard\u0131mc\u0131 olabilir.<\/p>\n<h4>.git klas\u00f6r\u00fcn\u00fc ba\u015fka bir yere ta\u015f\u0131yabilir miyim?<\/h4>\n<p>Hay\u0131r, <code>.git<\/code> klas\u00f6r\u00fc, projenizin k\u00f6k dizininde olmak zorundad\u0131r. Git, bu klas\u00f6r\u00fcn konumuna g\u00f6re projenizin bir depo olup olmad\u0131\u011f\u0131n\u0131 anlar ve i\u015flemlerini ger\u00e7ekle\u015ftirir. Ancak, \"bare repository\" (\u00e7\u0131plak depo) ad\u0131 verilen bir konsept vard\u0131r ki bu, \u00e7al\u0131\u015fma dizini olmayan, sadece <code>.git<\/code> klas\u00f6r\u00fcn\u00fcn i\u00e7eri\u011fini bar\u0131nd\u0131ran bir depodur. Bu genellikle merkezi sunucularda kullan\u0131l\u0131r.<\/p>\n<h4>Git'i daha iyi anlamak i\u00e7in nereden ba\u015flamal\u0131y\u0131m?<\/h4>\n<p>Git'i daha iyi anlamak i\u00e7in \u00f6ncelikle temel komutlar\u0131 (<code>git add<\/code>, <code>git commit<\/code>, <code>git push<\/code>, <code>git pull<\/code>, <code>git branch<\/code>, <code>git merge<\/code>) pratik yaparak \u00f6\u011frenmelisiniz. Ard\u0131ndan, bu makalede bahsedilen <code>.git<\/code> klas\u00f6r\u00fcn\u00fcn i\u00e7 yap\u0131s\u0131n\u0131 inceleyerek ve <code>git cat-file<\/code>, <code>git reflog<\/code> gibi daha ileri komutlar\u0131 kullanarak Git'in perde arkas\u0131nda neler oldu\u011funu ke\u015ffedebilirsiniz. Pro Git kitab\u0131 ve resmi Git belgeleri de harika kaynaklard\u0131r.<\/p>\n","protected":false},"excerpt":{"rendered":"Git&#8217;in Kalbine Yolculuk: Nas\u0131l \u00c7al\u0131\u015f\u0131r ve.","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-37721","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&#039;in Kalbine Yolculuk: Nas\u0131l \u00c7al\u0131\u015f\u0131r ve .git Klas\u00f6r\u00fcn\u00fcn Rol\u00fc - 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\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Git&#039;in Kalbine Yolculuk: Nas\u0131l \u00c7al\u0131\u015f\u0131r ve .git Klas\u00f6r\u00fcn\u00fcn Rol\u00fc\" \/>\n<meta property=\"og:description\" content=\"Git&#039;in Kalbine Yolculuk: Nas\u0131l \u00c7al\u0131\u015f\u0131r ve.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-13T11:30:37+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=\"14 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Git&#8217;in Kalbine Yolculuk: Nas\u0131l \u00c7al\u0131\u015f\u0131r ve .git Klas\u00f6r\u00fcn\u00fcn Rol\u00fc\",\"datePublished\":\"2026-01-13T11:30:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/\"},\"wordCount\":2512,\"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\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/\",\"name\":\"Git'in Kalbine Yolculuk: Nas\u0131l \u00c7al\u0131\u015f\u0131r ve .git Klas\u00f6r\u00fcn\u00fcn Rol\u00fc - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-13T11:30:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Git&#8217;in Kalbine Yolculuk: Nas\u0131l \u00c7al\u0131\u015f\u0131r ve .git Klas\u00f6r\u00fcn\u00fcn Rol\u00fc\"}]},{\"@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'in Kalbine Yolculuk: Nas\u0131l \u00c7al\u0131\u015f\u0131r ve .git Klas\u00f6r\u00fcn\u00fcn Rol\u00fc - 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\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/","og_locale":"tr_TR","og_type":"article","og_title":"Git'in Kalbine Yolculuk: Nas\u0131l \u00c7al\u0131\u015f\u0131r ve .git Klas\u00f6r\u00fcn\u00fcn Rol\u00fc","og_description":"Git'in Kalbine Yolculuk: Nas\u0131l \u00c7al\u0131\u015f\u0131r ve.","og_url":"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-13T11:30:37+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"14 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Git&#8217;in Kalbine Yolculuk: Nas\u0131l \u00c7al\u0131\u015f\u0131r ve .git Klas\u00f6r\u00fcn\u00fcn Rol\u00fc","datePublished":"2026-01-13T11:30:37+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/"},"wordCount":2512,"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\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/","url":"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/","name":"Git'in Kalbine Yolculuk: Nas\u0131l \u00c7al\u0131\u015f\u0131r ve .git Klas\u00f6r\u00fcn\u00fcn Rol\u00fc - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-13T11:30:37+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/gitin-kalbine-yolculuk-nasil-calisir-ve-git-klasorunun-rolu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Git&#8217;in Kalbine Yolculuk: Nas\u0131l \u00c7al\u0131\u015f\u0131r ve .git Klas\u00f6r\u00fcn\u00fcn Rol\u00fc"}]},{"@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\/37721","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=37721"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37721\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37721"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37721"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37721"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}