{"id":44267,"date":"2026-08-22T21:09:28","date_gmt":"2026-08-22T18:09:28","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/"},"modified":"2026-08-22T21:09:46","modified_gmt":"2026-08-22T18:09:46","slug":"ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/","title":{"rendered":"\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub&#8217;a Git ve SSH ile Nas\u0131l Ta\u015f\u0131n\u0131r?"},"content":{"rendered":"<h2>\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub&#8217;a Git ve SSH ile Nas\u0131l Ta\u015f\u0131n\u0131r?<\/h2>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, projelerinizi y\u00f6netmek, de\u011fi\u015fiklikleri takip etmek ve di\u011fer geli\u015ftiricilerle i\u015fbirli\u011fi yapmak i\u00e7in g\u00fc\u00e7l\u00fc ara\u00e7lara ihtiyac\u0131n\u0131z vard\u0131r. \u0130\u015fte tam da bu noktada Git ve GitHub devreye giriyor. Bu makale, s\u0131f\u0131rdan ba\u015flayarak yerel bir klas\u00f6rdeki projenizi Git versiyon kontrol sistemiyle nas\u0131l y\u00f6netece\u011finizi ve ard\u0131ndan GitHub&#8217;a SSH protokol\u00fc \u00fczerinden nas\u0131l y\u00fckleyece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayacak. E\u011fer kod yazmaya yeni ba\u015flad\u0131ysan\u0131z veya versiyon kontrol sistemlerine yabanc\u0131ysan\u0131z, bu rehber sizin i\u00e7in m\u00fckemmel bir ba\u015flang\u0131\u00e7 noktas\u0131 olacak. Peki, kendi projenizi dijital d\u00fcnyaya ta\u015f\u0131maya haz\u0131r m\u0131s\u0131n\u0131z?<\/p>\n<h2>Neden Git ve GitHub Kullanmal\u0131y\u0131z? Versiyon Kontrol\u00fcn\u00fcn \u00d6nemi Nedir?<\/h2>\n<p>Bir proje \u00fczerinde \u00e7al\u0131\u015f\u0131rken, dosyalar\u0131n\u0131zda s\u00fcrekli de\u011fi\u015fiklikler yapars\u0131n\u0131z. Belki yeni bir \u00f6zellik eklersiniz, belki mevcut bir hatay\u0131 d\u00fczeltirsiniz ya da eski bir \u00f6zelli\u011fi tamamen kald\u0131r\u0131rs\u0131n\u0131z. Bu s\u00fcre\u00e7te, projenizin farkl\u0131 a\u015famalar\u0131n\u0131 takip etmek, hatalar ortaya \u00e7\u0131kt\u0131\u011f\u0131nda \u00f6nceki kararl\u0131 s\u00fcr\u00fcmlere geri d\u00f6nmek veya birden fazla ki\u015fiyle ayn\u0131 anda \u00e7al\u0131\u015fmak olduk\u00e7a karma\u015f\u0131k bir hal alabilir. \u0130\u015fte bu karma\u015fay\u0131 ortadan kald\u0131rmak i\u00e7in versiyon kontrol sistemleri (VCS) kullan\u0131l\u0131r. Git, bu sistemlerin en pop\u00fcler ve en g\u00fc\u00e7l\u00fclerinden biridir.<\/p>\n<p>Git, da\u011f\u0131t\u0131k bir versiyon kontrol sistemi (Distributed Version Control System &#8211; DVCS) olarak bilinir. Bu, projenizin t\u00fcm ge\u00e7mi\u015finin her geli\u015ftiricinin yerel makinesinde tutuldu\u011fu anlam\u0131na gelir. Yani, merkezi bir sunucuya ba\u011f\u0131ml\u0131 olmadan \u00e7al\u0131\u015fabilir, internet ba\u011flant\u0131n\u0131z olmasa bile projenizin t\u00fcm ge\u00e7mi\u015fine eri\u015febilir ve de\u011fi\u015fikliklerinizi kaydedebilirsiniz. Git&#8217;in sundu\u011fu en b\u00fcy\u00fck avantajlardan biri, projenizin farkl\u0131 s\u00fcr\u00fcmlerini (commit&#8217;ler) kolayca y\u00f6netebilmenizdir. Her bir commit, projenizin belirli bir andaki anl\u0131k g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc (snapshot) temsil eder. Bu sayede, herhangi bir zamanda projenizin \u00f6nceki bir haline sorunsuz bir \u015fekilde d\u00f6nebilir, yapt\u0131\u011f\u0131n\u0131z hatalar\u0131 kolayca geri alabilir veya farkl\u0131 \u00f6zellikler \u00fczerinde paralel olarak \u00e7al\u0131\u015fabilirsiniz.<\/p>\n<p>Peki ya GitHub? GitHub, Git depolar\u0131n\u0131 (repository) bar\u0131nd\u0131ran web tabanl\u0131 bir platformdur. Projelerinizi GitHub&#8217;a y\u00fckleyerek, d\u00fcnyan\u0131n d\u00f6rt bir yan\u0131ndaki geli\u015ftiricilerle i\u015fbirli\u011fi yapabilir, a\u00e7\u0131k kaynak projelere katk\u0131da bulunabilir veya kendi projelerinizi di\u011ferlerinin eri\u015fimine a\u00e7abilirsiniz. GitHub, sadece bir depolama alan\u0131 olman\u0131n \u00f6tesinde, proje y\u00f6netimi, hata takibi, kod incelemesi ve s\u00fcrekli entegrasyon (CI\/CD) gibi bir\u00e7ok ek \u00f6zellik sunar. Bir projenizi GitHub&#8217;a ta\u015f\u0131d\u0131\u011f\u0131n\u0131zda, asl\u0131nda projenize bir nevi &#8220;dijital kimlik&#8221; kazand\u0131rm\u0131\u015f olursunuz. Bu sayede, i\u015fverenler potansiyel yetenekleri ke\u015ffedebilir, di\u011fer geli\u015ftiriciler sizinle ileti\u015fime ge\u00e7ebilir ve projeleriniz daha geni\u015f kitlelere ula\u015fabilir. \u00d6zellikle yaz\u0131l\u0131m geli\u015ftirme kariyerine yeni ba\u015flayanlar i\u00e7in, bir GitHub profilinin olmas\u0131, portfolyo (\u00e7al\u0131\u015fma \u00f6rne\u011fi) niteli\u011fi ta\u015f\u0131r ve kendinizi sekt\u00f6rde g\u00f6stermenin en etkili yollar\u0131ndan biridir. Git, yerel makinenizde versiyon kontrol\u00fcn\u00fc sa\u011flarken; GitHub, bu yerel depolar\u0131n\u0131z\u0131 internete ta\u015f\u0131yarak k\u00fcresel i\u015fbirli\u011fi ve eri\u015filebilirlik imkan\u0131 sunar. Bu ikilinin entegrasyonu, modern yaz\u0131l\u0131m geli\u015ftirmenin temel ta\u015flar\u0131ndan biridir ve her geli\u015ftiricinin \u00f6\u011frenmesi gereken vazge\u00e7ilmez bir beceridir.<\/p>\n<h3>Git, GitHub ve SSH: Temel Kavramlara H\u0131zl\u0131 Bir Bak\u0131\u015f<\/h3>\n<p>Bu rehberde bolca kullanaca\u011f\u0131m\u0131z \u00fc\u00e7 temel kavram var: Git, GitHub ve SSH. Bu kavramlar\u0131 anlamak, yerel projenizi buluta ta\u015f\u0131ma s\u00fcrecini \u00e7ok daha anlaml\u0131 hale getirecektir. Her birine k\u0131saca g\u00f6z atal\u0131m.<\/p>\n<ul>\n<li><strong>Git:<\/strong> Daha \u00f6nce de bahsetti\u011fimiz gibi, Git bir versiyon kontrol sistemidir. Linus Torvalds (Linux \u00e7ekirde\u011finin yarat\u0131c\u0131s\u0131) taraf\u0131ndan 2005 y\u0131l\u0131nda geli\u015ftirilmi\u015ftir. Git&#8217;in temel amac\u0131, bir projenin zaman i\u00e7indeki t\u00fcm de\u011fi\u015fikliklerini kaydetmek, bu de\u011fi\u015fiklikleri y\u00f6netmek ve birden fazla ki\u015finin ayn\u0131 proje \u00fczerinde \u00e7ak\u0131\u015fma ya\u015famadan \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamakt\u0131r. Git, komut sat\u0131r\u0131 aray\u00fcz\u00fc (Command Line Interface &#8211; CLI) \u00fczerinden veya \u00e7e\u015fitli grafiksel kullan\u0131c\u0131 aray\u00fczleri (Graphical User Interface &#8211; GUI) arac\u0131l\u0131\u011f\u0131yla kullan\u0131labilir. Her geli\u015ftiricinin kendi yerel makinesinde projenin tam bir kopyas\u0131n\u0131 bar\u0131nd\u0131rmas\u0131, Git&#8217;i hem h\u0131zl\u0131 hem de g\u00fcvenilir k\u0131lar.<\/li>\n<li><strong>GitHub:<\/strong> GitHub, Git depolar\u0131n\u0131 bar\u0131nd\u0131rmak i\u00e7in tasarlanm\u0131\u015f web tabanl\u0131 bir platformdur. Milyonlarca geli\u015ftirici ve kurulu\u015f taraf\u0131ndan projelerini bar\u0131nd\u0131rmak, i\u015fbirli\u011fi yapmak ve a\u00e7\u0131k kaynak toplulu\u011funa katk\u0131da bulunmak i\u00e7in kullan\u0131l\u0131r. GitHub, depolar\u0131n\u0131z\u0131n (repository) yan\u0131 s\u0131ra, projeler i\u00e7in sorun takibi (issue tracking), kod incelemesi (code review), proje y\u00f6netimi panolar\u0131 ve wiki sayfalar\u0131 gibi ek \u00f6zellikler sunar. Projenizi GitHub&#8217;a y\u00fckledi\u011finizde, asl\u0131nda onu internet \u00fczerinde herkese a\u00e7\u0131k (public) veya belirli ki\u015filerle payla\u015f\u0131lan (private) bir depoya koymu\u015f olursunuz. Bu, projenizin yedeklenmesini sa\u011flar ve d\u00fcnyan\u0131n her yerinden eri\u015filebilir olmas\u0131n\u0131 m\u00fcmk\u00fcn k\u0131lar.<\/li>\n<li><strong>SSH (Secure Shell):<\/strong> SSH, a\u011f \u00fczerinden g\u00fcvenli bir \u015fekilde veri al\u0131\u015fveri\u015fi yapmak i\u00e7in kullan\u0131lan bir kriptografik a\u011f protokol\u00fcd\u00fcr. GitHub ile ileti\u015fim kurarken, projenizi yerel makinenizden GitHub&#8217;a y\u00fcklemek veya GitHub&#8217;dan yerel makinenize indirmek i\u00e7in iki ana y\u00f6ntem vard\u0131r: HTTPS ve SSH. HTTPS, kullan\u0131c\u0131 ad\u0131 ve \u015fifre ile kimlik do\u011frulamas\u0131 yaparken, SSH anahtar \u00e7iftleri (key pair) kullanarak daha g\u00fcvenli ve pratik bir kimlik do\u011frulama y\u00f6ntemi sunar. Bir SSH anahtar \u00e7ifti, bir \u00f6zel anahtar (private key) ve bir genel anahtar (public key) olmak \u00fczere iki par\u00e7adan olu\u015fur. \u00d6zel anahtar\u0131n\u0131z yerel makinenizde gizli tutulurken, genel anahtar\u0131n\u0131z\u0131 GitHub hesab\u0131n\u0131za eklersiniz. GitHub, sizinle ileti\u015fim kurmak istedi\u011finde, genel anahtar\u0131n\u0131z\u0131 kullanarak sizin \u00f6zel anahtar\u0131n\u0131zla e\u015fle\u015fip e\u015fle\u015fmedi\u011fini kontrol eder. Bu e\u015fle\u015fme ba\u015far\u0131l\u0131 olursa, kimlik do\u011frulaman\u0131z ger\u00e7ekle\u015fir ve \u015fifre girmenize gerek kalmadan g\u00fcvenli bir ba\u011flant\u0131 kurulur. Bu y\u00f6ntem, \u00f6zellikle s\u0131k s\u0131k Git komutlar\u0131 kullanan geli\u015ftiriciler i\u00e7in hem g\u00fcvenlik hem de kullan\u0131m kolayl\u0131\u011f\u0131 a\u00e7\u0131s\u0131ndan tercih edilen bir yoldur.<\/li>\n<\/ul>\n<p>Bu \u00fc\u00e7 kavram\u0131n bir araya gelmesiyle, yerel geli\u015ftirme ortam\u0131n\u0131zdan k\u00fcresel i\u015fbirli\u011fi platformlar\u0131na sorunsuz bir ge\u00e7i\u015f yapabilir, projelerinizi g\u00fcvenle y\u00f6netebilir ve geli\u015ftirebilirsiniz. \u015eimdi, bu ara\u00e7lar\u0131 nas\u0131l kuraca\u011f\u0131m\u0131za ve kullanaca\u011f\u0131m\u0131za ge\u00e7elim.<\/p>\n<h2>GitHub Yolculu\u011funa Ba\u015flarken: Ortam\u0131 Nas\u0131l Haz\u0131rlar\u0131z?<\/h2>\n<p>Yerel projenizi GitHub&#8217;a ta\u015f\u0131madan \u00f6nce, bilgisayar\u0131n\u0131zda ve GitHub hesab\u0131n\u0131zda baz\u0131 \u00f6n haz\u0131rl\u0131klar yapman\u0131z gerekiyor. Bu ad\u0131mlar, Git&#8217;i kurmay\u0131, bir GitHub hesab\u0131 olu\u015fturmay\u0131 ve SSH anahtar\u0131n\u0131z\u0131 yap\u0131land\u0131rmay\u0131 i\u00e7erir. Her ad\u0131m\u0131 dikkatlice takip ederek sorunsuz bir ba\u015flang\u0131\u00e7 yapabilirsiniz.<\/p>\n<h3>Git Kurulumu ve GitHub Hesap Olu\u015fturma Ad\u0131mlar\u0131 Nelerdir?<\/h3>\n<p>\u0130lk olarak, bilgisayar\u0131n\u0131za Git&#8217;i kurman\u0131z gerekiyor. Git, \u00e7o\u011fu i\u015fletim sistemi i\u00e7in kolayca indirilebilir ve kurulabilir. \u0130\u015fletim sisteminize g\u00f6re a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyebilirsiniz:<\/p>\n<ul>\n<li><strong>Windows i\u00e7in:<\/strong> <a href=\"https:\/\/git-scm.com\/download\/win\">Git for Windows<\/a> adresine gidin ve kurulum dosyas\u0131n\u0131 indirin. Kurulum sihirbaz\u0131n\u0131 takip ederken varsay\u0131lan se\u00e7enekleri kabul etmeniz genellikle yeterlidir. Kurulum bittikten sonra, komut istemcisini (Command Prompt) veya PowerShell&#8217;i a\u00e7\u0131p <code>git --version<\/code> yazarak Git&#8217;in ba\u015far\u0131l\u0131 bir \u015fekilde kurulup kurulmad\u0131\u011f\u0131n\u0131 kontrol edebilirsiniz.<\/li>\n<li><strong>macOS i\u00e7in:<\/strong> macOS&#8217;ta Git genellikle Xcode Komut Sat\u0131r\u0131 Ara\u00e7lar\u0131 (Xcode Command Line Tools) ile birlikte gelir. Terminal&#8217;i a\u00e7\u0131p <code>git --version<\/code> yazarak kontrol edin. E\u011fer y\u00fckl\u00fc de\u011filse, <code>xcode-select --install<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak y\u00fckleyebilirsiniz. Alternatif olarak, <a href=\"https:\/\/git-scm.com\/download\/mac\">Git for macOS<\/a> adresinden indirme yapabilirsiniz.<\/li>\n<li><strong>Linux i\u00e7in:<\/strong> \u00c7o\u011fu Linux da\u011f\u0131t\u0131m\u0131nda Git, paket y\u00f6neticisi arac\u0131l\u0131\u011f\u0131yla kolayca kurulabilir. \u00d6rne\u011fin, Debian\/Ubuntu tabanl\u0131 sistemlerde <code>sudo apt update && sudo apt install git<\/code>, Fedora tabanl\u0131 sistemlerde <code>sudo dnf install git<\/code> komutunu kullanabilirsiniz. Kurulumdan sonra <code>git --version<\/code> ile kontrol etmeyi unutmay\u0131n.<\/li>\n<\/ul>\n<p>Git kurulumunu tamamlad\u0131ktan sonra, Git&#8217;e kim oldu\u011funuzu tan\u0131tman\u0131z gerekiyor. Bu, yapt\u0131\u011f\u0131n\u0131z her de\u011fi\u015fikli\u011fin (commit) kimin taraf\u0131ndan yap\u0131ld\u0131\u011f\u0131n\u0131 kaydetmek i\u00e7in \u00f6nemlidir. Terminal veya komut istemcisini a\u00e7arak \u015fu komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>git config --global user.name \"Ad\u0131n\u0131z Soyad\u0131n\u0131z\"\ngit config --global user.email \"eposta@adresiniz.com\"<\/code><\/pre>\n<\/p><\/div>\n<p>Kendi ad\u0131n\u0131z ve e-posta adresinizle bu bilgileri g\u00fcncelledi\u011finizden emin olun. Bu bilgiler, GitHub&#8217;da yapt\u0131\u011f\u0131n\u0131z commit&#8217;lerle ili\u015fkilendirilecektir.<\/p>\n<p>\u015eimdi s\u0131ra GitHub hesab\u0131n\u0131z\u0131 olu\u015fturmaya geldi. E\u011fer hen\u00fcz bir hesab\u0131n\u0131z yoksa, <a href=\"https:\/\/github.com\/join\">github.com\/join<\/a> adresine giderek \u00fccretsiz bir hesap olu\u015fturabilirsiniz. Kay\u0131t i\u015flemi olduk\u00e7a basittir; bir kullan\u0131c\u0131 ad\u0131, e-posta adresi ve \u015fifre belirlemeniz yeterlidir. Hesab\u0131n\u0131z\u0131 olu\u015fturduktan ve e-posta adresinizi do\u011frulad\u0131ktan sonra, GitHub&#8217;\u0131n ana sayfas\u0131na eri\u015febileceksiniz. Bu hesap, projelerinizi bar\u0131nd\u0131raca\u011f\u0131n\u0131z ve di\u011fer geli\u015ftiricilerle etkile\u015fim kuraca\u011f\u0131n\u0131z merkezi nokta olacak.<\/p>\n<h3>SSH Anahtar\u0131 Olu\u015fturma ve GitHub&#8217;a Ekleme S\u00fcreci Nas\u0131l \u0130\u015fler?<\/h3>\n<p>SSH anahtarlar\u0131, GitHub ile g\u00fcvenli ve \u015fifresiz ileti\u015fim kurman\u0131n en iyi yoludur. Her seferinde kullan\u0131c\u0131 ad\u0131 ve \u015fifre girmek yerine, bilgisayar\u0131n\u0131z ile GitHub aras\u0131nda kimlik do\u011frulamas\u0131 yapmak i\u00e7in bir anahtar \u00e7ifti kullanaca\u011f\u0131z. Bu i\u015flem, bir \u00f6zel anahtar (bilgisayar\u0131n\u0131zda kalacak) ve bir genel anahtar (GitHub&#8217;a y\u00fcklenecek) olu\u015fturmay\u0131 i\u00e7erir.<\/p>\n<p>Terminal veya komut istemcisini a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>ssh-keygen -t ed25519 -C \"eposta@adresiniz.com\"<\/code><\/pre>\n<\/p><\/div>\n<p><code>eposta@adresiniz.com<\/code> k\u0131sm\u0131na GitHub hesab\u0131n\u0131zla ili\u015fkili e-posta adresinizi yaz\u0131n. Bu komut, <code>ed25519<\/code> algoritmas\u0131n\u0131 kullanarak yeni bir SSH anahtar \u00e7ifti olu\u015fturacakt\u0131r. Komut sizden anahtar\u0131n kaydedilece\u011fi bir konum isteyecektir. Genellikle varsay\u0131lan konum olan <code>\/home\/kullanici_adiniz\/.ssh\/id_ed25519<\/code> (Linux\/macOS) veya <code>C:\\Users\\KullaniciAd\u0131\\.ssh\\id_ed25519<\/code> (Windows) konumunu kabul etmek i\u00e7in Enter tu\u015funa basabilirsiniz. Ard\u0131ndan, bir parola (passphrase) girmeniz istenir. Bu parola, \u00f6zel anahtar\u0131n\u0131z\u0131 yetkisiz eri\u015fime kar\u015f\u0131 korur. G\u00fc\u00e7l\u00fc bir parola belirlemeniz \u00f6nerilir, ancak pratiklik a\u00e7\u0131s\u0131ndan bo\u015f b\u0131rakmay\u0131 da tercih edebilirsiniz (bu durumda her ba\u011flant\u0131da \u015fifre sormaz). Parolay\u0131 iki kez girdikten sonra anahtar \u00e7iftiniz olu\u015fturulmu\u015f olacakt\u0131r.<\/p>\n<p>Anahtar \u00e7ifti olu\u015fturulduktan sonra, genel anahtar\u0131n\u0131z\u0131 (public key) GitHub hesab\u0131n\u0131za eklemeniz gerekir. Genel anahtar\u0131n\u0131z\u0131n ad\u0131 genellikle <code>id_ed25519.pub<\/code> \u015feklindedir ve <code>.ssh<\/code> dizininde bulunur. Bu dosyan\u0131n i\u00e7eri\u011fini kopyalamak i\u00e7in a\u015fa\u011f\u0131daki komutlar\u0131 kullanabilirsiniz:<\/p>\n<ul>\n<li><strong>macOS\/Linux i\u00e7in:<\/strong>\n<div class=\"code-container\">\n<pre><code>cat ~\/.ssh\/id_ed25519.pub<\/code><\/pre>\n<\/p><\/div>\n<\/li>\n<li><strong>Windows i\u00e7in (Git Bash kullan\u0131yorsan\u0131z):<\/strong>\n<div class=\"code-container\">\n<pre><code>cat ~\/.ssh\/id_ed25519.pub<\/code><\/pre>\n<\/p><\/div>\n<\/li>\n<li><strong>Windows i\u00e7in (PowerShell kullan\u0131yorsan\u0131z):<\/strong>\n<div class=\"code-container\">\n<pre><code>Get-Content \"$env:USERPROFILE\\.ssh\\id_ed25519.pub\"<\/code><\/pre>\n<\/p><\/div>\n<\/li>\n<\/ul>\n<p>Bu komut, genel anahtar\u0131n\u0131z\u0131n i\u00e7eri\u011fini terminale yazd\u0131racakt\u0131r. \u00c7\u0131kt\u0131n\u0131n tamam\u0131n\u0131 kopyalay\u0131n (genellikle <code>ssh-ed25519 AAAA...<\/code> ile ba\u015flayan ve e-posta adresinizle biten uzun bir metin dizisi).<\/p>\n<p>\u015eimdi GitHub&#8217;a gidin: Profil foto\u011fraf\u0131n\u0131za t\u0131klay\u0131n > <strong>Settings (Ayarlar)<\/strong> > Sol men\u00fcden <strong>SSH and GPG keys (SSH ve GPG anahtarlar\u0131)<\/strong> se\u00e7ene\u011fine t\u0131klay\u0131n > <strong>New SSH key (Yeni SSH anahtar\u0131)<\/strong> d\u00fc\u011fmesine t\u0131klay\u0131n. A\u00e7\u0131lan sayfada, &#8220;Title (Ba\u015fl\u0131k)&#8221; alan\u0131na anahtar\u0131n\u0131z\u0131 tan\u0131mlayan bir isim verin (\u00f6rne\u011fin, &#8220;Ev Bilgisayar\u0131m&#8221; veya &#8220;\u0130\u015f Laptop&#8217;um&#8221;). &#8220;Key (Anahtar)&#8221; alan\u0131na kopyalad\u0131\u011f\u0131n\u0131z genel anahtar metnini yap\u0131\u015ft\u0131r\u0131n. Son olarak, <strong>Add SSH key (SSH anahtar\u0131 ekle)<\/strong> d\u00fc\u011fmesine t\u0131klay\u0131n. GitHub \u015fifrenizi girmeniz istenebilir.<\/p>\n<p>SSH ba\u011flant\u0131n\u0131z\u0131n ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 test etmek i\u00e7in terminalinizde \u015fu komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>ssh -T git@github.com<\/code><\/pre>\n<\/p><\/div>\n<p>E\u011fer her \u015fey do\u011fru yap\u0131ld\u0131ysa, &#8220;Hi <code>kullanici_adiniz<\/code>! You&#8217;ve successfully authenticated, but GitHub does not provide shell access.&#8221; gibi bir mesaj g\u00f6rmelisiniz. Bu mesaj, GitHub ile SSH \u00fczerinden ba\u015far\u0131l\u0131 bir \u015fekilde kimlik do\u011frulamas\u0131 yapt\u0131\u011f\u0131n\u0131z\u0131 g\u00f6sterir. Art\u0131k yerel projenizi GitHub&#8217;a g\u00fcvenli bir \u015fekilde ta\u015f\u0131yabilirsiniz.<\/p>\n<h2>Yerel Projeyi Git ile Nas\u0131l Ba\u015flat\u0131r\u0131z ve \u0130lk De\u011fi\u015fiklikleri Kaydederiz?<\/h2>\n<p>Git ve GitHub ortam\u0131n\u0131 haz\u0131rlad\u0131\u011f\u0131m\u0131za g\u00f6re, \u015fimdi yerel makinenizde bir proje olu\u015fturup onu Git&#8217;in kontrol\u00fc alt\u0131na alma zaman\u0131. Bu b\u00f6l\u00fcm, s\u0131f\u0131rdan bir proje klas\u00f6r\u00fc olu\u015fturmay\u0131, Git deposunu ba\u015flatmay\u0131 ve ilk dosyalar\u0131n\u0131z\u0131 Git&#8217;e ekleyerek bir &#8220;commit&#8221; (taahh\u00fct) olu\u015fturmay\u0131 kapsayacak.<\/p>\n<p>\u0130lk ad\u0131m, projeniz i\u00e7in bir klas\u00f6r olu\u015fturmakt\u0131r. Terminal veya komut istemcisini a\u00e7\u0131n ve projenizi olu\u015fturmak istedi\u011finiz dizine gidin. \u00d6rne\u011fin, masa\u00fcst\u00fcn\u00fczde bir proje olu\u015fturmak isterseniz:<\/p>\n<div class=\"code-container\">\n<pre><code>cd Desktop\nmkdir ilk-github-projem\ncd ilk-github-projem<\/code><\/pre>\n<\/p><\/div>\n<p>Bu komutlar s\u0131ras\u0131yla masa\u00fcst\u00fcne gider, <code>ilk-github-projem<\/code> ad\u0131nda yeni bir klas\u00f6r olu\u015fturur ve bu klas\u00f6r\u00fcn i\u00e7ine girer. \u015eimdi bu klas\u00f6r, projenizin ana dizini olacak.<\/p>\n<p>Klas\u00f6r\u00fcn i\u00e7ine girdikten sonra, bu klas\u00f6r\u00fc bir Git deposu olarak ba\u015flatman\u0131z gerekiyor. Bu, Git&#8217;in bu klas\u00f6rdeki de\u011fi\u015fiklikleri takip etmeye ba\u015flamas\u0131n\u0131 sa\u011flar. A\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>git init<\/code><\/pre>\n<\/p><\/div>\n<p>Bu komut, <code>.git<\/code> ad\u0131nda gizli bir alt dizin olu\u015fturur. Bu dizin, projenizin t\u00fcm versiyon kontrol ge\u00e7mi\u015fini ve Git&#8217;in \u00e7al\u0131\u015fmas\u0131 i\u00e7in gereken di\u011fer t\u00fcm bilgileri i\u00e7erir. Bu dizini asla manuel olarak de\u011fi\u015ftirmemelisiniz. Komutun \u00e7\u0131kt\u0131s\u0131 genellikle &#8220;Initialized empty Git repository in \/path\/to\/ilk-github-projem\/.git\/&#8221; \u015feklinde olacakt\u0131r.<\/p>\n<p>\u015eimdi projemize birka\u00e7 dosya ekleyelim. \u00d6rne\u011fin, basit bir HTML dosyas\u0131 ve bir README dosyas\u0131 olu\u015fturabiliriz. Bir metin d\u00fczenleyici (VS Code, Sublime Text vb.) kullanarak <code>index.html<\/code> ve <code>README.md<\/code> ad\u0131nda iki dosya olu\u015fturun ve <code>ilk-github-projem<\/code> klas\u00f6r\u00fcne kaydedin. \u0130\u00e7erikleri \u015fimdilik basit olabilir:<\/p>\n<p><code>index.html<\/code> i\u00e7eri\u011fi:<\/p>\n<div class=\"code-container\"><\/div>\n<p><code>README.md<\/code> i\u00e7eri\u011fi:<\/p>\n<div class=\"code-container\">\n<pre><code># \u0130lk GitHub Projem\n\nBu depo, yerel makinemden GitHub'a Git ve SSH kullanarak y\u00fckledi\u011fim ilk projemdir.\nAmac\u0131m, versiyon kontrol sistemlerini ve uzaktan depo y\u00f6netimini \u00f6\u011frenmektir.<\/code><\/pre>\n<\/p><\/div>\n<p>Dosyalar\u0131 olu\u015fturduktan sonra, Git&#8217;e bu dosyalar\u0131n takip edilmesi gerekti\u011fini s\u00f6ylememiz gerekiyor. Bu i\u015fleme &#8220;staging&#8221; (sahneleme) denir. Staging alan\u0131, bir sonraki commit&#8217;e dahil etmek istedi\u011finiz de\u011fi\u015fiklikleri toplad\u0131\u011f\u0131n\u0131z bir aland\u0131r. T\u00fcm dosyalar\u0131 staging alan\u0131na eklemek i\u00e7in \u015fu komutu kullan\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>git add .<\/code><\/pre>\n<\/p><\/div>\n<p><code>.<\/code> (nokta) i\u015fareti, mevcut dizindeki t\u00fcm de\u011fi\u015fiklikleri ve yeni dosyalar\u0131 staging alan\u0131na ekle anlam\u0131na gelir. Belirli bir dosyay\u0131 eklemek isterseniz, <code>git add index.html<\/code> gibi kullanabilirsiniz. Staging alan\u0131na ekledikten sonra, <code>git status<\/code> komutu ile durumu kontrol edebilirsiniz. Bu komut, hangi dosyalar\u0131n takip edildi\u011fini, hangilerinin staging alan\u0131nda oldu\u011funu ve hangilerinin hen\u00fcz eklenmedi\u011fini g\u00f6sterir.<\/p>\n<p>Dosyalar staging alan\u0131na eklendikten sonra, bu de\u011fi\u015fiklikleri kal\u0131c\u0131 olarak Git ge\u00e7mi\u015fine kaydetme zaman\u0131. Bu i\u015fleme &#8220;commit&#8221; denir. Her commit, projenizin belirli bir andaki anl\u0131k g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc temsil eder ve bir mesajla birlikte gelir. Mesaj, o commit&#8217;te ne gibi de\u011fi\u015fiklikler yap\u0131ld\u0131\u011f\u0131n\u0131 a\u00e7\u0131klamal\u0131d\u0131r. \u0130yi bir commit mesaj\u0131, projenin ge\u00e7mi\u015fini anlamay\u0131 \u00e7ok daha kolayla\u015ft\u0131r\u0131r.<\/p>\n<div class=\"code-container\">\n<pre><code>git commit -m \"\u0130lk proje dosyalar\u0131: index.html ve README.md eklendi\"<\/code><\/pre>\n<\/p><\/div>\n<p><code>-m<\/code> bayra\u011f\u0131, commit mesaj\u0131n\u0131 do\u011frudan komut sat\u0131r\u0131nda belirtmenizi sa\u011flar. Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, Git size ka\u00e7 dosyan\u0131n de\u011fi\u015fti\u011fini ve ka\u00e7 sat\u0131r eklendi\u011fini\/silindi\u011fini g\u00f6steren bir \u00f6zet sunacakt\u0131r. Tebrikler! \u0130lk commit&#8217;inizi olu\u015fturdunuz. Bu, projenizin yerel Git deposundaki ilk versiyonudur. Art\u0131k bu de\u011fi\u015fiklikler, Git ge\u00e7mi\u015finizin bir par\u00e7as\u0131d\u0131r ve istedi\u011finiz zaman bu noktaya geri d\u00f6nebilirsiniz.<\/p>\n<h2>GitHub Deposu Olu\u015fturma ve Yerel Projeyi Uzak Depoya Ba\u011flama Ad\u0131mlar\u0131<\/h2>\n<p>Yerel projemizi Git ile ba\u015flatt\u0131k ve ilk commit&#8217;imizi olu\u015fturduk. \u015eimdi s\u0131ra bu yerel depoyu GitHub&#8217;daki bir uzak depoya (remote repository) ba\u011flamaya geldi. Bu sayede projenizin bir kopyas\u0131 GitHub&#8217;da bar\u0131nd\u0131r\u0131lacak, ba\u015fkalar\u0131yla payla\u015f\u0131labilir hale gelecek ve g\u00fcvenli bir \u015fekilde yedeklenecektir.<\/p>\n<p>\u0130lk olarak, GitHub hesab\u0131n\u0131za giri\u015f yap\u0131n. Ana sayfada sa\u011f \u00fcst k\u00f6\u015fede bulunan &#8220;+&#8221; simgesine t\u0131klay\u0131n ve &#8220;New repository&#8221; (Yeni depo) se\u00e7ene\u011fini se\u00e7in. Alternatif olarak, do\u011frudan <a href=\"https:\/\/github.com\/new\">github.com\/new<\/a> adresine gidebilirsiniz.<\/p>\n<p>Yeni depo olu\u015fturma sayfas\u0131nda a\u015fa\u011f\u0131daki bilgileri doldurman\u0131z gerekecek:<\/p>\n<ul>\n<li><strong>Repository name (Depo ad\u0131):<\/strong> Yerel klas\u00f6r ad\u0131n\u0131zla ayn\u0131 olmas\u0131 tavsiye edilir, bu kar\u0131\u015f\u0131kl\u0131\u011f\u0131 \u00f6nler. Bizim \u00f6rne\u011fimizde <code>ilk-github-projem<\/code> yazabilirsiniz.<\/li>\n<li><strong>Description (A\u00e7\u0131klama &#8211; iste\u011fe ba\u011fl\u0131):<\/strong> Projenizin ne hakk\u0131nda oldu\u011funu k\u0131sa ve \u00f6z bir \u015fekilde a\u00e7\u0131klayan bir c\u00fcmle ekleyebilirsiniz.<\/li>\n<li><strong>Public (Herkese a\u00e7\u0131k) veya Private (\u00d6zel):<\/strong> Projenizi herkesin g\u00f6rmesini istiyorsan\u0131z &#8220;Public&#8221; se\u00e7ene\u011fini i\u015faretleyin. E\u011fer sadece sizin veya belirledi\u011finiz ki\u015filerin eri\u015fmesini istiyorsan\u0131z &#8220;Private&#8221; se\u00e7ene\u011fini se\u00e7in. Bu rehber i\u00e7in &#8220;Public&#8221; se\u00e7ene\u011fini kullanabiliriz.<\/li>\n<li><strong>Initialize this repository with a README (Bu depoyu bir README ile ba\u015flat):<\/strong> Bu se\u00e7ene\u011fi <strong>i\u015faretlemeyin<\/strong>. \u00c7\u00fcnk\u00fc yerel projemizde zaten kendi <code>README.md<\/code> dosyam\u0131z\u0131 olu\u015fturduk. E\u011fer i\u015faretlerseniz, GitHub bir README dosyas\u0131 olu\u015fturacak ve bu da yerel projenizle \u00e7ak\u0131\u015fmalara neden olabilir.<\/li>\n<li><strong>Add .gitignore (Bir .gitignore ekle) ve Choose a license (Bir lisans se\u00e7):<\/strong> Bu se\u00e7enekleri \u015fimdilik bo\u015f b\u0131rak\u0131n. \u0130leri d\u00fczey konulard\u0131r ve bu rehberin kapsam\u0131 d\u0131\u015f\u0131ndad\u0131r.<\/li>\n<\/ul>\n<p>Bilgileri doldurduktan sonra &#8220;Create repository&#8221; (Depo olu\u015ftur) d\u00fc\u011fmesine t\u0131klay\u0131n. GitHub, sizin i\u00e7in yeni bir bo\u015f depo olu\u015fturacak ve size bu depoyu yerel Git deponuzla nas\u0131l ba\u011flayaca\u011f\u0131n\u0131za dair talimatlar i\u00e7eren bir sayfa g\u00f6sterecektir.<\/p>\n<p>Bu sayfada, deponuzun URL&#8217;sini bulacaks\u0131n\u0131z. SSH ba\u011flant\u0131s\u0131 kullanaca\u011f\u0131m\u0131z i\u00e7in, URL&#8217;nin &#8220;SSH&#8221; sekmesi alt\u0131nda oldu\u011fundan emin olun. Genellikle \u015fu formatta olacakt\u0131r: <code>git@github.com:kullanici_adiniz\/depo_adiniz.git<\/code>. Bu URL&#8217;yi kopyalay\u0131n.<\/p>\n<p>\u015eimdi yerel projemizin dizinine geri d\u00f6n\u00fcn (terminalde <code>cd ilk-github-projem<\/code> komutuyla). Yerel deponuzu, GitHub&#8217;daki uzak depoya ba\u011flaman\u0131z gerekiyor. Bu i\u015flemi <code>git remote add<\/code> komutuyla yapar\u0131z:<\/p>\n<div class=\"code-container\">\n<pre><code>git remote add origin git@github.com:kullanici_adiniz\/ilk-github-projem.git<\/code><\/pre>\n<\/p><\/div>\n<p>Burada <code>origin<\/code>, uzak deponuza verdi\u011fimiz varsay\u0131lan isimdir. Bu ismi de\u011fi\u015ftirebilirsiniz, ancak <code>origin<\/code> yayg\u0131n olarak kullan\u0131lan bir isimlendirmedir ve \u00e7o\u011fu geli\u015ftirici taraf\u0131ndan anla\u015f\u0131l\u0131r. <code>git@github.com:kullanici_adiniz\/ilk-github-projem.git<\/code> k\u0131sm\u0131na ise az \u00f6nce GitHub&#8217;dan kopyalad\u0131\u011f\u0131n\u0131z SSH URL&#8217;sini yap\u0131\u015ft\u0131r\u0131n. Bu komut, yerel Git deponuza, GitHub&#8217;daki bu belirli depoyla ileti\u015fim kurmas\u0131 gerekti\u011fini s\u00f6yler.<\/p>\n<p>Uzak deponun ba\u015far\u0131yla eklendi\u011fini do\u011frulamak i\u00e7in \u015fu komutu kullanabilirsiniz:<\/p>\n<div class=\"code-container\">\n<pre><code>git remote -v<\/code><\/pre>\n<\/p><\/div>\n<p>Bu komut, yerel deponuzun hangi uzak depolarla ba\u011flant\u0131l\u0131 oldu\u011funu ve bu depolar\u0131n URL&#8217;lerini (hem fetch hem de push i\u00e7in) g\u00f6sterecektir. \u00c7\u0131kt\u0131, ekledi\u011finiz <code>origin<\/code> deposunu ve SSH URL&#8217;sini i\u00e7ermelidir.<\/p>\n<p>Yerel deponuz art\u0131k GitHub&#8217;daki bo\u015f deponuzla ba\u011flant\u0131l\u0131 durumda. Bir sonraki ad\u0131m, yerel commit&#8217;lerinizi GitHub&#8217;a &#8220;push&#8221; etmektir. Bu, yerel de\u011fi\u015fikliklerinizin uzak depoya g\u00f6nderilmesi anlam\u0131na gelir ve projenizin ilk kez GitHub&#8217;da g\u00f6r\u00fcnmesini sa\u011flayacakt\u0131r.<\/p>\n<h2>De\u011fi\u015fiklikleri Uzak Depoya G\u00f6nderme: \u0130lk Commit ve Push Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>Art\u0131k yerel Git deponuzu GitHub&#8217;daki uzak depoyla ba\u015far\u0131yla ba\u011flad\u0131n\u0131z. \u015eimdi, yerel makinenizde yapt\u0131\u011f\u0131n\u0131z ve kaydetti\u011finiz de\u011fi\u015fiklikleri (commit&#8217;leri) GitHub&#8217;a g\u00f6nderme zaman\u0131. Bu i\u015fleme &#8220;push&#8221; denir. \u0130lk push i\u015flemi, yerel projenizin GitHub&#8217;daki varl\u0131\u011f\u0131n\u0131 ba\u015flatacakt\u0131r.<\/p>\n<p>Yerel deponuzdaki commit&#8217;leri uzak depoya g\u00f6ndermek i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131r\u0131z:<\/p>\n<div class=\"code-container\">\n<pre><code>git push -u origin main<\/code><\/pre>\n<\/p><\/div>\n<p>Bu komutu detayland\u0131ral\u0131m:<\/p>\n<ul>\n<li><code>git push<\/code>: Yerel deponuzdaki commit&#8217;leri uzak depoya g\u00f6ndermek i\u00e7in kullan\u0131lan temel komuttur.<\/li>\n<li><code>-u<\/code> veya <code>--set-upstream<\/code>: Bu bayrak, yerel <code>main<\/code> (veya eski ad\u0131yla <code>master<\/code>) dal\u0131n\u0131n uzak <code>origin<\/code> deposundaki <code>main<\/code> dal\u0131n\u0131 izlemesini sa\u011flar. Bu sayede, gelecekteki push ve pull i\u015flemleri i\u00e7in sadece <code>git push<\/code> veya <code>git pull<\/code> yazman\u0131z yeterli olur, \u00e7\u00fcnk\u00fc Git hangi uzak depoyu ve hangi dal\u0131 kullanaca\u011f\u0131n\u0131 bilecektir. Bu bayrak sadece ilk push i\u015fleminde kullan\u0131l\u0131r.<\/li>\n<li><code>origin<\/code>: Bu, yerel deponuzun GitHub&#8217;daki uzak depoya verdi\u011finiz isimdir (<code>git remote add origin ...<\/code> komutuyla belirlemi\u015ftik).<\/li>\n<li><code>main<\/code>: Bu, g\u00f6ndermek istedi\u011finiz yerel dal\u0131n ad\u0131d\u0131r. \u00c7o\u011fu yeni Git deposu varsay\u0131lan olarak <code>main<\/code> dal\u0131n\u0131 kullan\u0131r. Baz\u0131 eski depolar veya farkl\u0131 konfig\u00fcrasyonlar <code>master<\/code> dal\u0131n\u0131 kullanabilir. Kendi yerel dal\u0131n\u0131z\u0131n ad\u0131n\u0131 <code>git branch<\/code> komutuyla kontrol edebilirsiniz.<\/li>\n<\/ul>\n<p>Komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, SSH anahtar\u0131n\u0131z\u0131n parolas\u0131 (e\u011fer belirlediyseniz) istenebilir. Parolan\u0131z\u0131 girdikten sonra Git, yerel commit&#8217;lerinizi GitHub&#8217;a g\u00f6ndermeye ba\u015flayacakt\u0131r. \u0130\u015flem tamamland\u0131\u011f\u0131nda, genellikle &#8220;Branch &#8216;main&#8217; set up to track remote branch &#8216;main&#8217; from &#8216;origin&#8217;.&#8221; gibi bir mesaj ve g\u00f6nderilen nesnelerin (objects) s\u0131k\u0131\u015ft\u0131r\u0131lmas\u0131 ve yaz\u0131lmas\u0131yla ilgili bilgiler g\u00f6receksiniz.<\/p>\n<p>Tebrikler! \u0130lk projenizi ba\u015far\u0131yla GitHub&#8217;a g\u00f6nderdiniz. \u015eimdi GitHub hesab\u0131n\u0131za geri d\u00f6n\u00fcn ve olu\u015fturdu\u011funuz depoyu yenileyin. Projenizin dosyalar\u0131 (<code>index.html<\/code> ve <code>README.md<\/code>) ve ilk commit mesaj\u0131n\u0131zla birlikte GitHub&#8217;da g\u00f6r\u00fcnmelidir. Art\u0131k projenizin bir kopyas\u0131 bulutta g\u00fcvende ve herkes taraf\u0131ndan eri\u015filebilir durumda (e\u011fer public yapt\u0131ysan\u0131z).<\/p>\n<p>Bu ilk push, projenizin temelini GitHub&#8217;a att\u0131. Bundan sonra yapaca\u011f\u0131n\u0131z her de\u011fi\u015fiklik, yeni bir commit olu\u015fturularak ve ard\u0131ndan <code>git push<\/code> komutuyla GitHub&#8217;a g\u00f6nderilerek g\u00fcncellenecektir. Bu s\u00fcrekli bir geli\u015ftirme ve senkronizasyon d\u00f6ng\u00fcs\u00fcd\u00fcr. Bu, projenizin t\u00fcm ge\u00e7mi\u015fini izleyebilmenizi, farkl\u0131 s\u00fcr\u00fcmler aras\u0131nda ge\u00e7i\u015f yapabilmenizi ve gerekti\u011finde \u00f6nceki hallerine d\u00f6nebilmenizi sa\u011flar. GitHub&#8217;\u0131n aray\u00fcz\u00fcnde commit ge\u00e7mi\u015finizi, dosya de\u011fi\u015fikliklerini ve daha fazlas\u0131n\u0131 g\u00f6rebilirsiniz. Bu, sadece bir yedekleme de\u011fil, ayn\u0131 zamanda projenizin geli\u015fimini g\u00f6rselle\u015ftiren ve i\u015fbirli\u011fini kolayla\u015ft\u0131ran g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r.<\/p>\n<h2>Projenizi G\u00fcncel Tutmak: Dosyalar\u0131 De\u011fi\u015ftirme ve Tekrar GitHub&#8217;a G\u00f6nderme<\/h2>\n<p>Bir projenin GitHub&#8217;a y\u00fcklenmesi sadece ba\u015flang\u0131\u00e7t\u0131r. Geli\u015ftirme s\u00fcreci boyunca dosyalar\u0131n\u0131zda s\u00fcrekli de\u011fi\u015fiklikler yapacak, yeni \u00f6zellikler ekleyecek veya hatalar\u0131 d\u00fczelteceksiniz. Bu de\u011fi\u015fiklikleri d\u00fczenli olarak GitHub&#8217;a g\u00f6ndermek, projenizin g\u00fcncel kalmas\u0131n\u0131, yedeklenmesini ve i\u015fbirli\u011fi i\u00e7in haz\u0131r olmas\u0131n\u0131 sa\u011flar. Bu b\u00f6l\u00fcmde, projenizde de\u011fi\u015fiklikler yapmay\u0131, bu de\u011fi\u015fiklikleri Git ile takip etmeyi ve tekrar GitHub&#8217;a nas\u0131l g\u00f6nderece\u011finizi ad\u0131m ad\u0131m g\u00f6rece\u011fiz.<\/p>\n<p>\u0130lk olarak, yerel projenizdeki bir dosyay\u0131 de\u011fi\u015ftirelim. \u00d6rne\u011fin, <code>index.html<\/code> dosyam\u0131za yeni bir paragraf ekleyelim veya mevcut bir metni g\u00fcncelleyelim. Metin d\u00fczenleyicinizle <code>index.html<\/code> dosyas\u0131n\u0131 a\u00e7\u0131n ve a\u015fa\u011f\u0131daki gibi bir de\u011fi\u015fiklik yap\u0131n:<\/p>\n<div class=\"code-container\"><\/div>\n<p>Dosyay\u0131 kaydettikten sonra, terminalinize geri d\u00f6n\u00fcn ve projenizin dizininde oldu\u011funuzdan emin olun. Git&#8217;in bu de\u011fi\u015fikli\u011fi alg\u0131lad\u0131\u011f\u0131n\u0131 g\u00f6rmek i\u00e7in <code>git status<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>git status<\/code><\/pre>\n<\/p><\/div>\n<p>Bu komutun \u00e7\u0131kt\u0131s\u0131, <code>index.html<\/code> dosyas\u0131n\u0131n &#8220;modified&#8221; (de\u011fi\u015ftirilmi\u015f) oldu\u011funu ve hen\u00fcz staging alan\u0131na eklenmedi\u011fini g\u00f6sterecektir. Git, bu de\u011fi\u015fikli\u011fi hen\u00fcz bir commit olarak kaydetmedi\u011fi i\u00e7in onu takip etmeye devam eder.<\/p>\n<p>De\u011fi\u015fikli\u011fin tam olarak ne oldu\u011funu g\u00f6rmek isterseniz, <code>git diff<\/code> komutunu kullanabilirsiniz. Bu komut, \u00e7al\u0131\u015fma dizininizdeki (working directory) de\u011fi\u015fiklikleri son commit ile kar\u015f\u0131la\u015ft\u0131r\u0131r:<\/p>\n<div class=\"code-container\">\n<pre><code>git diff<\/code><\/pre>\n<\/p><\/div>\n<p>\u00c7\u0131kt\u0131, ekledi\u011finiz yeni sat\u0131r\u0131 ye\u015fil renkte ve ba\u015f\u0131nda &#8220;+&#8221; i\u015faretiyle g\u00f6sterecektir. Bu, hangi sat\u0131rlar\u0131n eklendi\u011fini, silindi\u011fini veya de\u011fi\u015ftirildi\u011fini g\u00f6rsel olarak anlaman\u0131za yard\u0131mc\u0131 olur. E\u011fer sadece staging alan\u0131ndaki de\u011fi\u015fiklikleri g\u00f6rmek isterseniz <code>git diff --staged<\/code> komutunu kullanabilirsiniz.<\/p>\n<p>\u015eimdi, bu de\u011fi\u015fikli\u011fi bir sonraki commit&#8217;e dahil etmek i\u00e7in staging alan\u0131na eklememiz gerekiyor. Daha \u00f6nce yapt\u0131\u011f\u0131m\u0131z gibi, <code>git add<\/code> komutunu kullan\u0131r\u0131z:<\/p>\n<div class=\"code-container\">\n<pre><code>git add index.html<\/code><\/pre>\n<\/p><\/div>\n<p>Birden fazla dosya de\u011fi\u015ftirdiyseniz ve hepsini eklemek isterseniz <code>git add .<\/code> komutunu kullanabilirsiniz. Staging i\u015fleminden sonra tekrar <code>git status<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131rsan\u0131z, <code>index.html<\/code> dosyas\u0131n\u0131n &#8220;Changes to be committed&#8221; (Commit edilecek de\u011fi\u015fiklikler) b\u00f6l\u00fcm\u00fcnde ye\u015fil renkte g\u00f6r\u00fcnd\u00fc\u011f\u00fcn\u00fc fark edeceksiniz. Bu, dosyan\u0131n bir sonraki commit&#8217;e haz\u0131r oldu\u011fu anlam\u0131na gelir.<\/p>\n<p>De\u011fi\u015fiklik staging alan\u0131na eklendikten sonra, onu bir commit olarak kaydetme zaman\u0131. Her zaman anlaml\u0131 ve a\u00e7\u0131klay\u0131c\u0131 bir commit mesaj\u0131 yazmaya \u00f6zen g\u00f6sterin:<\/p>\n<div class=\"code-container\">\n<pre><code>git commit -m \"index.html g\u00fcncellendi: Yeni paragraf eklendi\"<\/code><\/pre>\n<\/p><\/div>\n<p>Bu commit, yerel Git deponuzdaki projenizin ge\u00e7mi\u015fine yeni bir anl\u0131k g\u00f6r\u00fcnt\u00fc ekler. Art\u0131k bu de\u011fi\u015fiklik, yerel olarak kaydedilmi\u015ftir.<\/p>\n<p>Son olarak, bu yeni commit&#8217;i GitHub&#8217;daki uzak depoya g\u00f6ndermemiz gerekiyor. Daha \u00f6nce <code>-u<\/code> bayra\u011f\u0131n\u0131 kulland\u0131\u011f\u0131m\u0131z i\u00e7in, art\u0131k sadece <code>git push<\/code> yazmam\u0131z yeterli olacakt\u0131r:<\/p>\n<div class=\"code-container\">\n<pre><code>git push<\/code><\/pre>\n<\/p><\/div>\n<p>Git, yerel deponuzdaki yeni commit&#8217;i alg\u0131layacak ve onu uzak depoya g\u00f6nderecektir. \u0130\u015flem tamamland\u0131\u011f\u0131nda, GitHub&#8217;daki deponuzu yenileyerek yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fikliklerin ve yeni commit mesaj\u0131n\u0131z\u0131n orada g\u00f6r\u00fcnd\u00fc\u011f\u00fcn\u00fc kontrol edebilirsiniz. Bu d\u00f6ng\u00fc, projenizin geli\u015ftirme s\u00fcreci boyunca s\u00fcrekli olarak tekrarlanacakt\u0131r: De\u011fi\u015fiklik yap, <code>git add<\/code> ile staging alan\u0131na ekle, <code>git commit<\/code> ile kaydet ve <code>git push<\/code> ile GitHub&#8217;a g\u00f6nder. Bu d\u00fczenli ak\u0131\u015f, projenizin versiyon kontrol\u00fcn\u00fc etkin bir \u015fekilde y\u00f6netmenizi sa\u011flar.<\/p>\n<h2>GitHub Kullan\u0131m\u0131nda \u0130leri D\u00fczey \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar Nelerdir?<\/h2>\n<p>Yerel bir projeyi Git ve SSH kullanarak GitHub&#8217;a nas\u0131l ta\u015f\u0131yaca\u011f\u0131n\u0131z\u0131 \u00f6\u011frendiniz. Bu temel ad\u0131mlar, versiyon kontrol d\u00fcnyas\u0131na sa\u011flam bir giri\u015f yapman\u0131z\u0131 sa\u011flar. Ancak Git ve GitHub&#8217;\u0131n sundu\u011fu imkanlar bunlarla s\u0131n\u0131rl\u0131 de\u011fil. Daha verimli ve profesyonel bir geli\u015ftirme deneyimi i\u00e7in baz\u0131 ileri d\u00fczey ipu\u00e7lar\u0131 ve en iyi uygulamalar\u0131 bilmek faydal\u0131d\u0131r.<\/p>\n<ul>\n<li><strong>Dallar (Branches) Kullan\u0131m\u0131:<\/strong> Git&#8217;in en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biri dallard\u0131r. Dallar\u0131, projenizin ana ak\u0131\u015f\u0131ndan (genellikle <code>main<\/code> veya <code>master<\/code> dal\u0131) ayr\u0131lan ba\u011f\u0131ms\u0131z geli\u015ftirme hatlar\u0131 olarak d\u00fc\u015f\u00fcnebilirsiniz. Yeni bir \u00f6zellik \u00fczerinde \u00e7al\u0131\u015f\u0131rken veya bir hata d\u00fczeltirken, ana dal\u0131 etkilemeden yeni bir dal olu\u015fturup t\u00fcm de\u011fi\u015fikliklerinizi o dalda yapabilirsiniz. \u0130\u015finiz bitti\u011finde, bu dal\u0131 ana dala &#8220;merge&#8221; (birle\u015ftirme) edersiniz. Bu, ana dal\u0131n her zaman kararl\u0131 kalmas\u0131n\u0131 sa\u011flar ve birden fazla ki\u015finin ayn\u0131 proje \u00fczerinde \u00e7ak\u0131\u015fma ya\u015famadan \u00e7al\u0131\u015fmas\u0131na olanak tan\u0131r. Yeni bir dal olu\u015fturmak i\u00e7in <code>git branch yeni-ozellik<\/code> ve o dala ge\u00e7mek i\u00e7in <code>git checkout yeni-ozellik<\/code> komutlar\u0131n\u0131 kullanabilirsiniz. \u0130ki komutu birle\u015ftiren <code>git checkout -b yeni-ozellik<\/code> de mevcuttur.<\/li>\n<li><strong><code>.gitignore<\/code> Dosyas\u0131:<\/strong> Her projede, Git&#8217;in takip etmesini istemedi\u011finiz dosyalar veya klas\u00f6rler bulunur. \u00d6rne\u011fin, derlenmi\u015f dosyalar (<code>.class<\/code>, <code>.o<\/code>), ba\u011f\u0131ml\u0131l\u0131k klas\u00f6rleri (<code>node_modules<\/code>), ge\u00e7ici dosyalar (<code>.tmp<\/code>) veya hassas bilgiler i\u00e7eren yap\u0131land\u0131rma dosyalar\u0131 (API anahtarlar\u0131). Bu t\u00fcr dosyalar\u0131 Git&#8217;in g\u00f6z ard\u0131 etmesini sa\u011flamak i\u00e7in projenizin k\u00f6k dizinine <code>.gitignore<\/code> ad\u0131nda bir dosya olu\u015fturabilirsiniz. Bu dosyan\u0131n i\u00e7ine, Git&#8217;in takip etmemesi gereken dosya ve klas\u00f6r desenlerini yazars\u0131n\u0131z. \u00d6rne\u011fin:\n<div class=\"code-container\">\n<pre><code># Log dosyalar\u0131\n*.log\n\n# Node.js ba\u011f\u0131ml\u0131l\u0131klar\u0131\nnode_modules\/\n\n# Ortam de\u011fi\u015fkenleri\n.env\n\n# \u0130\u015fletim sistemi ge\u00e7ici dosyalar\u0131\n.DS_Store\nThumbs.db<\/code><\/pre>\n<\/p><\/div>\n<p>Bu dosya, gereksiz dosyalar\u0131n deponuza eklenmesini engelleyerek hem deponuzun boyutunu k\u00fc\u00e7\u00fclt\u00fcr hem de temiz kalmas\u0131n\u0131 sa\u011flar.<\/p>\n<\/li>\n<li><strong>Anlaml\u0131 Commit Mesajlar\u0131:<\/strong> Her commit, projenizin ge\u00e7mi\u015findeki \u00f6nemli bir noktay\u0131 i\u015faret eder. Bu nedenle, commit mesajlar\u0131n\u0131z\u0131n a\u00e7\u0131klay\u0131c\u0131 ve anlaml\u0131 olmas\u0131 \u00e7ok \u00f6nemlidir. \u0130yi bir commit mesaj\u0131, o commit&#8217;te ne gibi de\u011fi\u015fiklikler yap\u0131ld\u0131\u011f\u0131n\u0131 ve neden yap\u0131ld\u0131\u011f\u0131n\u0131 k\u0131saca \u00f6zetlemelidir. Genellikle, mesaj\u0131n ilk sat\u0131r\u0131 k\u0131sa ve \u00f6z bir \u00f6zet olurken, daha detayl\u0131 a\u00e7\u0131klamalar bo\u015f bir sat\u0131rdan sonra eklenebilir. \u00d6rne\u011fin: <code>feat: Kullan\u0131c\u0131 giri\u015f formu eklendi<\/code> veya <code>fix: Mobil g\u00f6r\u00fcn\u00fcmdeki kayd\u0131rma hatas\u0131 d\u00fczeltildi<\/code>.<\/li>\n<li><strong>S\u0131k ve K\u00fc\u00e7\u00fck Commit&#8217;ler Yap\u0131n:<\/strong> De\u011fi\u015fikliklerinizi b\u00fcy\u00fck par\u00e7alar halinde biriktirmek yerine, s\u0131k s\u0131k ve k\u00fc\u00e7\u00fck commit&#8217;ler yap\u0131n. Her commit, tek bir mant\u0131ksal de\u011fi\u015fikli\u011fi i\u00e7ermelidir. Bu, hatalar\u0131 bulmay\u0131, geri almay\u0131 veya projenin belirli bir noktas\u0131na d\u00f6nmeyi \u00e7ok daha kolay hale getirir.<\/li>\n<li><strong>Pull Request (\u00c7ekme \u0130ste\u011fi) Kullan\u0131m\u0131:<\/strong> GitHub \u00fczerinde i\u015fbirli\u011fi yaparken, kendi dal\u0131n\u0131zda yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikleri ana dala birle\u015ftirmek i\u00e7in &#8220;Pull Request&#8221; (PR) veya &#8220;Merge Request&#8221; (MR) olu\u015fturursunuz. PR&#8217;ler, di\u011fer geli\u015ftiricilerin kodunuzu incelemesine, yorum yapmas\u0131na ve potansiyel sorunlar\u0131 tespit etmesine olanak tan\u0131r. Bu, kod kalitesini art\u0131rmak ve ekip i\u00e7inde bilgi payla\u015f\u0131m\u0131n\u0131 sa\u011flamak i\u00e7in harika bir yoldur.<\/li>\n<li><strong>GitHub Profili ve Portfolyo:<\/strong> GitHub profiliniz, bir geli\u015ftirici olarak dijital kartvizitinizdir. A\u00e7\u0131k kaynak projelere katk\u0131da bulunarak, kendi projelerinizi d\u00fczenli olarak g\u00fcncelleyerek ve iyi README dosyalar\u0131 yazarak profilinizi zenginle\u015ftirin. Bu, potansiyel i\u015fverenler veya i\u015fbirlik\u00e7iler i\u00e7in yeteneklerinizi sergilemenin en iyi yollar\u0131ndan biridir.<\/li>\n<\/ul>\n<p>Bu ipu\u00e7lar\u0131, Git ve GitHub&#8217;\u0131 sadece bir dosya depolama sistemi olmaktan \u00e7\u0131kar\u0131p, g\u00fc\u00e7l\u00fc bir geli\u015ftirme arac\u0131 ve i\u015fbirli\u011fi platformu olarak kullanman\u0131za yard\u0131mc\u0131 olacakt\u0131r. Pratik yaparak ve bu ara\u00e7lar\u0131 g\u00fcnl\u00fck i\u015f ak\u0131\u015f\u0131n\u0131za entegre ederek k\u0131sa s\u00fcrede uzmanla\u015fabilirsiniz.<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular ve Sonu\u00e7<\/h2>\n<p>Bu makalede, yerel bir klas\u00f6rden Git ve SSH kullanarak ilk GitHub projenizi nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ve y\u00f6netece\u011finizi ad\u0131m ad\u0131m \u00f6\u011frendiniz. Git&#8217;in versiyon kontrol sistemi olarak nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, GitHub&#8217;\u0131n bir bar\u0131nd\u0131rma ve i\u015fbirli\u011fi platformu olarak \u00f6nemini ve SSH&#8217;nin g\u00fcvenli ba\u011flant\u0131 sa\u011flamadaki rol\u00fcn\u00fc ke\u015ffettiniz. Git kurulumundan, SSH anahtar\u0131 olu\u015fturmaya, yerel deponuzu ba\u015flatmaktan, ilk commit&#8217;i yapmaya ve de\u011fi\u015fiklikleri GitHub&#8217;a g\u00f6ndermeye kadar t\u00fcm s\u00fcre\u00e7leri pratik \u00f6rneklerle uygulad\u0131k. Ayr\u0131ca, dallanma, <code>.gitignore<\/code> kullan\u0131m\u0131 ve anlaml\u0131 commit mesajlar\u0131 gibi ileri d\u00fczey ipu\u00e7lar\u0131yla Git ve GitHub&#8217;\u0131 daha etkin kullanman\u0131n yollar\u0131n\u0131 da inceledik. Art\u0131k kendi projelerinizi g\u00fcvenle GitHub&#8217;a ta\u015f\u0131yabilir, versiyon kontrol\u00fcn\u00fc y\u00f6netebilir ve a\u00e7\u0131k kaynak d\u00fcnyas\u0131na ad\u0131m atabilirsiniz. Unutmay\u0131n, pratik yapmak ve d\u00fczenli olarak Git komutlar\u0131n\u0131 kullanmak, bu ara\u00e7larda ustala\u015fman\u0131n anahtar\u0131d\u0131r. Ba\u015far\u0131lar dileriz!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<ol>\n<li>\n            <strong>Git ile GitHub aras\u0131ndaki fark nedir?<\/strong><\/p>\n<p>Git, yerel bilgisayar\u0131n\u0131zda \u00e7al\u0131\u015fan bir versiyon kontrol sistemidir. Projenizin t\u00fcm de\u011fi\u015fiklik ge\u00e7mi\u015fini takip etmenizi ve y\u00f6netmenizi sa\u011flar. GitHub ise Git depolar\u0131n\u0131 bar\u0131nd\u0131ran web tabanl\u0131 bir platformdur. Git ile yerel olarak olu\u015fturdu\u011funuz projelerinizi internet \u00fczerinde saklaman\u0131za, ba\u015fkalar\u0131yla payla\u015fman\u0131za ve i\u015fbirli\u011fi yapman\u0131za olanak tan\u0131r.<\/p>\n<\/li>\n<li>\n            <strong>Neden HTTPS yerine SSH kullanmal\u0131y\u0131m?<\/strong><\/p>\n<p>SSH, GitHub ile daha g\u00fcvenli ve pratik bir ba\u011flant\u0131 sa\u011flar. HTTPS ile her i\u015flemde kullan\u0131c\u0131 ad\u0131 ve \u015fifre girmeniz gerekirken, SSH bir anahtar \u00e7ifti kullanarak kimlik do\u011frulamas\u0131 yapar. Bu, \u00f6zellikle s\u0131k Git komutlar\u0131 kullanan geli\u015ftiriciler i\u00e7in zaman kazand\u0131r\u0131r ve g\u00fcvenlik seviyesini art\u0131r\u0131r. Bir kez SSH anahtar\u0131n\u0131z\u0131 yap\u0131land\u0131rd\u0131ktan sonra \u015fifre girmenize gerek kalmaz.<\/p>\n<\/li>\n<li>\n            <strong><code>git add .<\/code> ve <code>git commit -m \"Mesaj\"<\/code> komutlar\u0131 ne i\u015fe yarar?<\/strong><\/p>\n<p><code>git add .<\/code> komutu, mevcut dizindeki t\u00fcm de\u011fi\u015ftirilmi\u015f veya yeni dosyalar\u0131 Git&#8217;in &#8220;staging&#8221; (sahneleme) alan\u0131na ekler. Bu, bir sonraki commit&#8217;e dahil etmek istedi\u011finiz de\u011fi\u015fiklikleri belirtir. <code>git commit -m \"Mesaj\"<\/code> komutu ise staging alan\u0131ndaki t\u00fcm de\u011fi\u015fiklikleri Git ge\u00e7mi\u015fine kal\u0131c\u0131 olarak kaydeder ve bu kayda &#8220;Mesaj&#8221; k\u0131sm\u0131nda belirtti\u011finiz a\u00e7\u0131klamay\u0131 ekler. Her commit, projenizin belirli bir andaki anl\u0131k g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc temsil eder.<\/p>\n<\/li>\n<li>\n            <strong>Yanl\u0131\u015f bir commit mesaj\u0131 yazd\u0131m, nas\u0131l d\u00fczeltebilirim?<\/strong><\/p>\n<p>E\u011fer son commit mesaj\u0131n\u0131z\u0131 yanl\u0131\u015f yazd\u0131ysan\u0131z ve hen\u00fcz bu commit&#8217;i GitHub&#8217;a (uzak depoya) g\u00f6ndermediyseniz, <code>git commit --amend -m \"Yeni do\u011fru mesaj\"<\/code> komutunu kullanarak d\u00fczeltebilirsiniz. E\u011fer commit&#8217;i zaten GitHub&#8217;a g\u00f6nderdiyseniz, ge\u00e7mi\u015fi de\u011fi\u015ftirmek sorunlara yol a\u00e7abilir. Bu durumda, yeni bir commit ile d\u00fczeltme yapmak veya dikkatli bir \u015fekilde <code>git revert<\/code> kullanmak daha g\u00fcvenlidir.<\/p>\n<\/li>\n<li>\n            <strong>Bir projeyi GitHub&#8217;dan yerel bilgisayar\u0131ma nas\u0131l kopyalar\u0131m?<\/strong><\/p>\n<p>Bir projeyi GitHub&#8217;dan yerel bilgisayar\u0131n\u0131za kopyalamak i\u00e7in &#8220;clone&#8221; (klonlama) i\u015flemini kullan\u0131rs\u0131n\u0131z. GitHub deposunun sayfas\u0131nda &#8220;Code&#8221; d\u00fc\u011fmesine t\u0131klay\u0131n, SSH URL&#8217;sini kopyalay\u0131n ve terminalinizde <code>git clone [SSH_URL]<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n. \u00d6rne\u011fin: <code>git clone git@github.com:kullanici_adiniz\/depo_adiniz.git<\/code>. Bu komut, deponun t\u00fcm ge\u00e7mi\u015fiyle birlikte yerel makinenize bir kopyas\u0131n\u0131 indirecektir.<\/p>\n<\/li>\n<\/ol>\n<p>#Git #GitHub #SSH #VersiyonKontrol #WebGeli\u015ftirme<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/simple-python-first-github-project\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/simple-python-first-github-project<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, projelerinizi y\u00f6netmek, de\u011fi\u015fiklikleri takip etmek ve di\u011fer geli\u015ftiricilerle i\u015fbirli\u011fi yapmak i\u00e7in g\u00fc\u00e7l\u00fc ara\u00e7lara ihtiyac\u0131n\u0131z vard\u0131r.","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-44267","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>\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub&#039;a Git ve SSH ile Nas\u0131l Ta\u015f\u0131n\u0131r? - 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\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub&#039;a Git ve SSH ile Nas\u0131l Ta\u015f\u0131n\u0131r?\" \/>\n<meta property=\"og:description\" content=\"Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, projelerinizi y\u00f6netmek, de\u011fi\u015fiklikleri takip etmek ve di\u011fer geli\u015ftiricilerle i\u015fbirli\u011fi yapmak i\u00e7in g\u00fc\u00e7l\u00fc ara\u00e7lara ihtiyac\u0131n\u0131z vard\u0131r.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-22T18:09:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-22T18:09:46+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=\"28 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub&#8217;a Git ve SSH ile Nas\u0131l Ta\u015f\u0131n\u0131r?\",\"datePublished\":\"2026-08-22T18:09:28+00:00\",\"dateModified\":\"2026-08-22T18:09:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/\"},\"wordCount\":5291,\"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\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/\",\"name\":\"\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub'a Git ve SSH ile Nas\u0131l Ta\u015f\u0131n\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-08-22T18:09:28+00:00\",\"dateModified\":\"2026-08-22T18:09:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub&#8217;a Git ve SSH ile Nas\u0131l Ta\u015f\u0131n\u0131r?\"}]},{\"@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":"\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub'a Git ve SSH ile Nas\u0131l Ta\u015f\u0131n\u0131r? - 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\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/","og_locale":"tr_TR","og_type":"article","og_title":"\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub'a Git ve SSH ile Nas\u0131l Ta\u015f\u0131n\u0131r?","og_description":"Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, projelerinizi y\u00f6netmek, de\u011fi\u015fiklikleri takip etmek ve di\u011fer geli\u015ftiricilerle i\u015fbirli\u011fi yapmak i\u00e7in g\u00fc\u00e7l\u00fc ara\u00e7lara ihtiyac\u0131n\u0131z vard\u0131r.","og_url":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-08-22T18:09:28+00:00","article_modified_time":"2026-08-22T18:09:46+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"28 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub&#8217;a Git ve SSH ile Nas\u0131l Ta\u015f\u0131n\u0131r?","datePublished":"2026-08-22T18:09:28+00:00","dateModified":"2026-08-22T18:09:46+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/"},"wordCount":5291,"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\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/","url":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/","name":"\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub'a Git ve SSH ile Nas\u0131l Ta\u015f\u0131n\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-08-22T18:09:28+00:00","dateModified":"2026-08-22T18:09:46+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-nasil-tasinir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub&#8217;a Git ve SSH ile Nas\u0131l Ta\u015f\u0131n\u0131r?"}]},{"@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\/44267","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=44267"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44267\/revisions"}],"predecessor-version":[{"id":44268,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44267\/revisions\/44268"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=44267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=44267"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=44267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}