{"id":44265,"date":"2026-08-22T21:05:04","date_gmt":"2026-08-22T18:05:04","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/"},"modified":"2026-08-22T21:05:26","modified_gmt":"2026-08-22T18:05:26","slug":"ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/","title":{"rendered":"\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub&#8217;a Git ve SSH ile Y\u00fckseli\u015f"},"content":{"rendered":"<h2>\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub&#8217;a Git ve SSH ile Y\u00fckseli\u015f<\/h2>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, projelerinizi y\u00f6netmek, ekip \u00fcyeleriyle i\u015f birli\u011fi yapmak ve yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikleri g\u00fcvenle takip etmek art\u0131k bir l\u00fcks de\u011fil, bir zorunluluktur. Peki, yepyeni bir projeye ba\u015flarken veya mevcut bir yerel klas\u00f6r\u00fc \u00e7evrimi\u00e7i d\u00fcnyaya ta\u015f\u0131mak istedi\u011finizde ne yapmal\u0131s\u0131n\u0131z? Bu makale, tam da bu soruya yan\u0131t veriyor: Yerel bilgisayar\u0131n\u0131zdaki bir projeyi Git versiyon kontrol sistemi ve SSH g\u00fcvenli ba\u011flant\u0131 protokol\u00fc arac\u0131l\u0131\u011f\u0131yla GitHub&#8217;a nas\u0131l ta\u015f\u0131yaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. E\u011fer kod yazmaya yeni ba\u015flad\u0131ysan\u0131z veya versiyon kontrol sistemleriyle ilk kez tan\u0131\u015f\u0131yorsan\u0131z, endi\u015felenmeyin. Bu kapsaml\u0131 rehber, sizi s\u0131f\u0131rdan al\u0131p projenizi ba\u015far\u0131yla GitHub&#8217;a y\u00fcklemeniz i\u00e7in gereken t\u00fcm bilgileri samimi ve anla\u015f\u0131l\u0131r bir dille sunacak. Haz\u0131rlan\u0131n, \u00e7\u00fcnk\u00fc dijital projenizin kap\u0131lar\u0131n\u0131 d\u00fcnyaya a\u00e7mak \u00fczeresiniz!<\/p>\n<h3>Versiyon Kontrol\u00fc Neden \u00d6nemli? Git ve GitHub&#8217;a Giri\u015f<\/h3>\n<p>Bir yaz\u0131l\u0131m projesi \u00fczerinde \u00e7al\u0131\u015f\u0131rken, her an bir hata yapma, \u00f6nemli bir \u00f6zelli\u011fi bozma veya \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131z kodu kaybetme riskiyle kar\u015f\u0131 kar\u015f\u0131yas\u0131n\u0131zd\u0131r. \u00d6zellikle bir ekip i\u00e7inde \u00e7al\u0131\u015f\u0131rken, farkl\u0131 ki\u015filerin ayn\u0131 dosya \u00fczerinde e\u015f zamanl\u0131 olarak \u00e7al\u0131\u015fmas\u0131, kod \u00e7ak\u0131\u015fmalar\u0131na ve kaosa yol a\u00e7abilir. \u0130\u015fte tam bu noktada &#8220;Versiyon Kontrol Sistemleri&#8221; (Version Control Systems &#8211; VCS) devreye girer. VCS, projenizin t\u00fcm ge\u00e7mi\u015fini kaydetmenize, yap\u0131lan de\u011fi\u015fiklikleri izlemenize, farkl\u0131 versiyonlar aras\u0131nda kolayca ge\u00e7i\u015f yapman\u0131za ve hatta hatal\u0131 de\u011fi\u015fiklikleri geri alman\u0131za olanak tan\u0131yan g\u00fc\u00e7l\u00fc ara\u00e7lard\u0131r. Projenizin her ad\u0131m\u0131n\u0131 bir zaman makinesinde yolculuk yapar gibi takip edebildi\u011finizi d\u00fc\u015f\u00fcn\u00fcn; VCS tam olarak bunu sa\u011flar.<\/p>\n<p>Piyasada bir\u00e7ok versiyon kontrol sistemi bulunsa da, a\u00e7\u0131k ara en pop\u00fcler ve en \u00e7ok kullan\u0131lan\u0131 <code>Git<\/code>&#8216;tir. Git, Linus Torvalds taraf\u0131ndan Linux \u00e7ekirde\u011finin geli\u015ftirilmesi i\u00e7in tasarlanm\u0131\u015f da\u011f\u0131t\u0131k bir versiyon kontrol sistemidir. Da\u011f\u0131t\u0131k olmas\u0131, her geli\u015ftiricinin projenin tam bir kopyas\u0131na sahip oldu\u011fu anlam\u0131na gelir. Bu da merkezi bir sunucuya ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 ortadan kald\u0131r\u0131r ve \u00e7evrimd\u0131\u015f\u0131 \u00e7al\u0131\u015fmaya olanak tan\u0131r. Git sayesinde, projenizin farkl\u0131 s\u00fcr\u00fcmlerini y\u00f6netebilir, yeni \u00f6zellikler \u00fczerinde ayr\u0131 &#8220;dallar&#8221; (branches) olu\u015fturabilir ve bu dallar\u0131 ana projeye (main\/master branch) g\u00fcvenli bir \u015fekilde birle\u015ftirebilirsiniz. Git&#8217;in yerel bilgisayar\u0131n\u0131zda \u00e7al\u0131\u015fmas\u0131, size muazzam bir esneklik ve kontrol sa\u011flar.<\/p>\n<p>Peki, <code>GitHub<\/code> nedir? Git yerel bilgisayar\u0131n\u0131zda \u00e7al\u0131\u015f\u0131rken, GitHub, Git depolar\u0131n\u0131z\u0131 (repositories) bar\u0131nd\u0131rmak i\u00e7in kullan\u0131lan web tabanl\u0131 bir platformdur. Bir nevi projeleriniz i\u00e7in sosyal medya platformu gibi d\u00fc\u015f\u00fcnebilirsiniz. GitHub, Git&#8217;in sa\u011flad\u0131\u011f\u0131 versiyon kontrol yeteneklerini al\u0131p bunlar\u0131 \u00e7evrimi\u00e7i bir ortamda, i\u015f birli\u011fini kolayla\u015ft\u0131ran bir aray\u00fczle birle\u015ftirir. Projelerinizi GitHub&#8217;a y\u00fckleyerek (push), kodunuzu d\u00fcnyan\u0131n her yerinden eri\u015filebilir hale getirebilir, di\u011fer geli\u015ftiricilerle kolayca payla\u015fabilir, onlar\u0131n katk\u0131lar\u0131n\u0131 alabilir ve a\u00e7\u0131k kaynak projelere dahil olabilirsiniz. Ayr\u0131ca, GitHub, projenizin ge\u00e7mi\u015fini g\u00f6rselle\u015ftirmenize, sorunlar\u0131 (issues) takip etmenize ve proje y\u00f6netimi i\u00e7in ek ara\u00e7lar sunar. Git yerel bir ara\u00e7ken, GitHub bu arac\u0131 k\u00fcresel bir i\u015f birli\u011fi platformuna d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. Bu iki teknoloji bir araya geldi\u011finde, geli\u015ftirme s\u00fcrecinizde verimlilik ve g\u00fcvenli\u011fi en \u00fcst d\u00fczeye \u00e7\u0131kar\u0131rs\u0131n\u0131z.<\/p>\n<h3>GitHub Hesab\u0131 Olu\u015fturma ve Yerel Ortam\u0131 Haz\u0131rlama: \u0130lk Ad\u0131mlar\u0131n\u0131z Nelerdir?<\/h3>\n<p>GitHub yolculu\u011funuza ba\u015flamak i\u00e7in atman\u0131z gereken ilk ve en temel ad\u0131m, bir GitHub hesab\u0131 olu\u015fturmakt\u0131r. Bu hesap, projelerinizi bar\u0131nd\u0131raca\u011f\u0131n\u0131z, di\u011fer geli\u015ftiricilerle etkile\u015fim kuraca\u011f\u0131n\u0131z ve a\u00e7\u0131k kaynak d\u00fcnyas\u0131na ad\u0131m ataca\u011f\u0131n\u0131z dijital kimli\u011finiz olacakt\u0131r. GitHub&#8217;a kaydolmak olduk\u00e7a basittir ve birka\u00e7 dakikan\u0131z\u0131 al\u0131r. Web taray\u0131c\u0131n\u0131zdan <a href=\"https:\/\/github.com\">github.com<\/a> adresine gidin ve &#8220;Sign up&#8221; (Kaydol) d\u00fc\u011fmesine t\u0131klay\u0131n. Sizden bir kullan\u0131c\u0131 ad\u0131, e-posta adresi ve g\u00fc\u00e7l\u00fc bir \u015fifre belirlemeniz istenecektir. Kay\u0131t i\u015flemini tamamlad\u0131ktan sonra e-posta adresinizi do\u011frulaman\u0131z gerekebilir. Bu ad\u0131mlar\u0131 tamamlad\u0131\u011f\u0131n\u0131zda, art\u0131k bir GitHub kullan\u0131c\u0131s\u0131s\u0131n\u0131z ve kendi depolar\u0131n\u0131z\u0131 (repositories) olu\u015fturmaya haz\u0131rs\u0131n\u0131z.<\/p>\n<p>GitHub hesab\u0131n\u0131z\u0131 olu\u015fturduktan sonra, yerel bilgisayar\u0131n\u0131zda Git&#8217;i kurman\u0131z gerekmektedir. Git, komut sat\u0131r\u0131 arac\u0131l\u0131\u011f\u0131yla \u00e7al\u0131\u015fan bir ara\u00e7 oldu\u011fu i\u00e7in, onu sisteminize y\u00fcklemeniz \u015fartt\u0131r. Kurulum s\u00fcreci, kulland\u0131\u011f\u0131n\u0131z i\u015fletim sistemine g\u00f6re biraz farkl\u0131l\u0131k g\u00f6sterebilir:<\/p>\n<ul>\n<li><strong>Windows Kullan\u0131c\u0131lar\u0131 \u0130\u00e7in:<\/strong> Git&#8217;i Windows&#8217;a kurman\u0131n en kolay yolu, resmi Git web sitesinden (git-scm.com) &#8220;Git for Windows&#8221; y\u00fckleyicisini indirmektir. \u0130ndirdi\u011finiz .exe dosyas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n ve kurulum sihirbaz\u0131n\u0131 takip edin. \u00c7o\u011fu durumda, varsay\u0131lan ayarlar\u0131 kabul etmek yeterli olacakt\u0131r. Kurulum s\u0131ras\u0131nda, Git Bash adl\u0131 bir terminal em\u00fclat\u00f6r\u00fc de y\u00fcklenecektir; bu, Git komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullanaca\u011f\u0131n\u0131z yerdir.<\/li>\n<li><strong>macOS Kullan\u0131c\u0131lar\u0131 \u0130\u00e7in:<\/strong> macOS&#8217;te Git genellikle Xcode Komut Sat\u0131r\u0131 Ara\u00e7lar\u0131 (Command Line Tools) ile birlikte gelir. Terminali a\u00e7\u0131p <code>git --version<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak Git&#8217;in kurulu olup olmad\u0131\u011f\u0131n\u0131 kontrol edebilirsiniz. E\u011fer kurulu de\u011filse, sistem sizden Xcode Komut Sat\u0131r\u0131 Ara\u00e7lar\u0131n\u0131 y\u00fcklemenizi isteyecektir. Alternatif olarak, Homebrew gibi bir paket y\u00f6neticisi kullanarak da Git&#8217;i y\u00fckleyebilirsiniz: <code>brew install git<\/code>.<\/li>\n<li><strong>Linux Kullan\u0131c\u0131lar\u0131 \u0130\u00e7in:<\/strong> Linux da\u011f\u0131t\u0131mlar\u0131n\u0131n \u00e7o\u011fu, Git&#8217;i varsay\u0131lan paket y\u00f6neticileri arac\u0131l\u0131\u011f\u0131yla kolayca kurman\u0131za olanak tan\u0131r. \u00d6rne\u011fin, Debian\/Ubuntu tabanl\u0131 sistemlerde <code>sudo apt update && sudo apt install git<\/code> komutunu, Fedora tabanl\u0131 sistemlerde ise <code>sudo dnf install git<\/code> komutunu kullanabilirsiniz.<\/li>\n<\/ul>\n<p>Git&#8217;i kurduktan sonra, kimli\u011finizi tan\u0131tman\u0131z \u00f6nemlidir. Bu, yapt\u0131\u011f\u0131n\u0131z her &#8220;commit&#8221; (de\u011fi\u015fiklik kayd\u0131) ile birlikte kimin bu de\u011fi\u015fikli\u011fi yapt\u0131\u011f\u0131n\u0131n kaydedilmesini sa\u011flar. Terminalinizi veya Git Bash&#8217;i a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutlar\u0131 kendi bilgilerinizle de\u011fi\u015ftirerek \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 \"e-posta-adresiniz@ornek.com\"<\/code><\/pre>\n<\/div>\n<p>Bu komutlar, Git&#8217;in global ayarlar\u0131nda kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 ve e-posta adresinizi tan\u0131mlar. Art\u0131k yerel ortam\u0131n\u0131z Git ile \u00e7al\u0131\u015fmaya tamamen haz\u0131r. Bir sonraki ad\u0131mda, GitHub ile g\u00fcvenli bir ba\u011flant\u0131 kurmak i\u00e7in SSH anahtarlar\u0131n\u0131 yap\u0131land\u0131raca\u011f\u0131z.<\/p>\n<h3>SSH Anahtarlar\u0131 Nas\u0131l Olu\u015fturulur ve GitHub&#8217;a Eklenir? G\u00fcvenli Ba\u011flant\u0131n\u0131n Temeli<\/h3>\n<p>GitHub ile \u00e7al\u0131\u015f\u0131rken projenizi yerel bilgisayar\u0131n\u0131zdan uzak depoya (remote repository) g\u00f6ndermek veya uzak depodan \u00e7ekmek i\u00e7in kimlik do\u011frulama (authentication) yapman\u0131z gerekir. Bunu yapman\u0131n iki yayg\u0131n yolu vard\u0131r: HTTPS ve SSH. HTTPS ile her i\u015flemde kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 ve \u015fifrenizi veya bir ki\u015fisel eri\u015fim belirtecini (Personal Access Token &#8211; PAT) girmeniz gerekir. SSH (Secure Shell) ise daha g\u00fcvenli ve pratik bir y\u00f6ntem sunar. SSH, bir \u00e7ift anahtar kullanarak kimlik do\u011frulamas\u0131 yapar: biri herkese a\u00e7\u0131k (public key) di\u011feri ise gizli (private key). Gizli anahtar\u0131n\u0131z yerel bilgisayar\u0131n\u0131zda kal\u0131rken, a\u00e7\u0131k anahtar\u0131n\u0131z\u0131 GitHub gibi hizmetlere eklersiniz. Bu sayede, her i\u015flemde \u015fifre girmek zorunda kalmazs\u0131n\u0131z; ba\u011flant\u0131 otomatik olarak g\u00fcvenli bir \u015fekilde do\u011frulan\u0131r. Bu b\u00f6l\u00fcm, SSH anahtarlar\u0131n\u0131z\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ve GitHub hesab\u0131n\u0131za nas\u0131l ekleyece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayacakt\u0131r.<\/p>\n<h4>SSH Anahtar \u00c7ifti Olu\u015fturma<\/h4>\n<p>\u00d6ncelikle, yerel bilgisayar\u0131n\u0131zda bir terminal veya Git Bash 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 \"e-posta-adresiniz@ornek.com\"<\/code><\/pre>\n<\/div>\n<p>Bu komut, yeni bir SSH anahtar \u00e7ifti olu\u015fturur. <code>-t ed25519<\/code>, modern ve g\u00fcvenli bir \u015fifreleme algoritmas\u0131 olan Ed25519&#8217;u kullanaca\u011f\u0131m\u0131z\u0131 belirtir. <code>-C \"e-posta-adresiniz@ornek.com\"<\/code> ise anahtar\u0131n\u0131za bir yorum ekler, bu genellikle e-posta adresiniz olur ve anahtar\u0131n kime ait oldu\u011funu anlaman\u0131za yard\u0131mc\u0131 olur. Komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, sizden anahtar\u0131n kaydedilece\u011fi bir konum istenecektir. Varsay\u0131lan konumu (genellikle <code>\/home\/kullanici_adiniz\/.ssh\/id_ed25519<\/code> veya <code>C:\\Users\\KullaniciAdi\\.ssh\\id_ed25519<\/code>) kabul etmek i\u00e7in Enter tu\u015funa basabilirsiniz. Daha sonra bir parola (passphrase) girmeniz istenecektir. Bu parola, gizli anahtar\u0131n\u0131z\u0131 ekstra bir g\u00fcvenlik katman\u0131yla korur. G\u00fc\u00e7l\u00fc bir parola belirlemeniz \u015fiddetle tavsiye edilir. Parola belirledikten sonra, ayn\u0131 parolay\u0131 tekrar girerek onaylay\u0131n. E\u011fer parola girmek istemiyorsan\u0131z, do\u011frudan Enter tu\u015funa basabilirsiniz, ancak bu g\u00fcvenlik a\u00e7\u0131s\u0131ndan \u00f6nerilmez.<\/p>\n<p>\u0130\u015flem tamamland\u0131\u011f\u0131nda, terminal size anahtar \u00e7iftinizin olu\u015fturuldu\u011funu belirten bir mesaj g\u00f6sterecektir. Gizli anahtar\u0131n\u0131z (\u00f6rne\u011fin <code>id_ed25519<\/code>) ve a\u00e7\u0131k anahtar\u0131n\u0131z (\u00f6rne\u011fin <code>id_ed25519.pub<\/code>) belirtilen dizinde bulunacakt\u0131r.<\/p>\n<h4>SSH Ajan\u0131n\u0131 Ba\u015flatma ve Anahtar\u0131 Ekleme<\/h4>\n<p>Baz\u0131 durumlarda, SSH anahtar\u0131n\u0131z\u0131n otomatik olarak tan\u0131nmas\u0131 i\u00e7in SSH ajan\u0131n\u0131 ba\u015flatman\u0131z ve anahtar\u0131n\u0131z\u0131 ona eklemeniz gerekebilir. Terminalde a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>eval \"$(ssh-agent -s)\"\nssh-add ~\/.ssh\/id_ed25519<\/code><\/pre>\n<\/div>\n<p><code>ssh-add<\/code> komutu, anahtar\u0131n\u0131z\u0131 SSH ajan\u0131na ekler. E\u011fer anahtar\u0131n\u0131z\u0131 olu\u015ftururken bir parola belirlediyseniz, bu ad\u0131mda sizden parolan\u0131z\u0131 girmeniz istenecektir.<\/p>\n<h4>A\u00e7\u0131k Anahtar\u0131 GitHub&#8217;a Ekleme<\/h4>\n<p>\u015eimdi s\u0131ra, olu\u015fturdu\u011funuz a\u00e7\u0131k anahtar\u0131 (public key) GitHub hesab\u0131n\u0131za eklemeye geldi. Bu, GitHub&#8217;\u0131n sizin yerel bilgisayar\u0131n\u0131zdan gelen ba\u011flant\u0131lar\u0131 tan\u0131mas\u0131n\u0131 ve do\u011frulanmas\u0131n\u0131 sa\u011flayacakt\u0131r.<\/p>\n<ol>\n<li><strong>A\u00e7\u0131k Anahtar\u0131n\u0131z\u0131 Kopyalay\u0131n:<\/strong> Terminalde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rarak a\u00e7\u0131k anahtar\u0131n\u0131z\u0131n i\u00e7eri\u011fini g\u00f6r\u00fcnt\u00fcleyin ve kopyalay\u0131n.<\/li>\n<div class=\"code-container\">\n<pre><code>cat ~\/.ssh\/id_ed25519.pub<\/code><\/pre>\n<\/p><\/div>\n<p>Bu komut, a\u00e7\u0131k anahtar dosyan\u0131z\u0131n i\u00e7eri\u011fini ekrana basacakt\u0131r. \u00c7\u0131kt\u0131n\u0131n tamam\u0131n\u0131 (<code>ssh-ed25519<\/code> ile ba\u015flayan ve e-posta adresinizle biten k\u0131sm\u0131) kopyalay\u0131n.<\/p>\n<li><strong>GitHub Hesab\u0131n\u0131za Giri\u015f Yap\u0131n:<\/strong> Web taray\u0131c\u0131n\u0131zdan GitHub&#8217;a giri\u015f yap\u0131n.<\/li>\n<li><strong>Ayarlara Gidin:<\/strong> Sa\u011f \u00fcst k\u00f6\u015fedeki profil foto\u011fraf\u0131n\u0131za t\u0131klay\u0131n ve a\u00e7\u0131lan men\u00fcden &#8220;Settings&#8221; (Ayarlar) se\u00e7ene\u011fini se\u00e7in.<\/li>\n<li><strong>SSH ve GPG Anahtarlar\u0131 B\u00f6l\u00fcm\u00fcne Gidin:<\/strong> Sol men\u00fcde &#8220;SSH and GPG keys&#8221; (SSH ve GPG anahtarlar\u0131) se\u00e7ene\u011fine t\u0131klay\u0131n.<\/li>\n<li><strong>Yeni SSH Anahtar\u0131 Ekle:<\/strong> &#8220;New SSH key&#8221; (Yeni SSH anahtar\u0131) veya &#8220;Add SSH key&#8221; (SSH anahtar\u0131 ekle) d\u00fc\u011fmesine t\u0131klay\u0131n.<\/li>\n<li><strong>Anahtar\u0131n\u0131z\u0131 Yap\u0131\u015ft\u0131r\u0131n:<\/strong> &#8220;Title&#8221; (Ba\u015fl\u0131k) alan\u0131na anahtar\u0131n\u0131z\u0131 tan\u0131mlayan bir isim verin (\u00f6rne\u011fin, &#8220;Ev Bilgisayar\u0131m&#8221; veya &#8220;\u0130\u015f Laptopu&#8221;). &#8220;Key&#8221; (Anahtar) alan\u0131na kopyalad\u0131\u011f\u0131n\u0131z a\u00e7\u0131k anahtar i\u00e7eri\u011fini yap\u0131\u015ft\u0131r\u0131n.<\/li>\n<li><strong>Anahtar\u0131 Ekleyin:<\/strong> Son olarak, &#8220;Add SSH key&#8221; d\u00fc\u011fmesine t\u0131klayarak anahtar\u0131 GitHub hesab\u0131n\u0131za ekleyin. E\u011fer parolan\u0131z varsa, GitHub sizden \u015fifrenizi isteyebilir.<\/li>\n<\/ol>\n<p>Tebrikler! Art\u0131k yerel bilgisayar\u0131n\u0131z ile GitHub aras\u0131nda g\u00fcvenli bir SSH ba\u011flant\u0131s\u0131 kurdunuz. Ba\u011flant\u0131n\u0131z\u0131n do\u011fru \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 test etmek i\u00e7in terminalde a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<div class=\"code-container\">\n<pre><code>ssh -T git@github.com<\/code><\/pre>\n<\/div>\n<p>E\u011fer her \u015fey yolundaysa, &#8220;Hi [kullan\u0131c\u0131 ad\u0131n\u0131z]! You&#8217;ve successfully authenticated&#8230;&#8221; (Merhaba [kullan\u0131c\u0131 ad\u0131n\u0131z]! Ba\u015far\u0131yla kimlik do\u011frulamas\u0131 yapt\u0131n\u0131z&#8230;) \u015feklinde bir mesaj g\u00f6rmelisiniz. Bu mesaj, SSH ba\u011flant\u0131n\u0131z\u0131n ba\u015far\u0131l\u0131 oldu\u011funu g\u00f6sterir ve art\u0131k \u015fifre girmeden Git i\u015flemlerini ger\u00e7ekle\u015ftirebilece\u011finiz anlam\u0131na gelir.<\/p>\n<h3>Yerel Projenizi Git ile Ba\u015flatma ve \u0130lk Commit&#8217;inizi Yapma: Projenizi Versiyonlamaya Ba\u015flay\u0131n<\/h3>\n<p>Art\u0131k GitHub hesab\u0131n\u0131z haz\u0131r, Git kurulu ve SSH ba\u011flant\u0131n\u0131z yap\u0131land\u0131r\u0131ld\u0131. S\u0131ra geldi yerel bilgisayar\u0131n\u0131zdaki projenizi Git versiyon kontrol sistemiyle y\u00f6netmeye ba\u015flamaya. Bu b\u00f6l\u00fcm, mevcut bir yerel klas\u00f6r\u00fc nas\u0131l bir Git deposuna d\u00f6n\u00fc\u015ft\u00fcrece\u011finizi ve projenizin ilk de\u011fi\u015fikliklerini (commit) nas\u0131l kaydedece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayacakt\u0131r.<\/p>\n<h4>Mevcut Klas\u00f6r\u00fc Git Deposu Yapma<\/h4>\n<p>\u00d6ncelikle, versiyon kontrol\u00fc alt\u0131na almak istedi\u011finiz projenizin ana klas\u00f6r\u00fcne gidin. Bunu terminal veya komut istemcisi \u00fczerinden yapman\u0131z gerekmektedir. \u00d6rne\u011fin, projeniz <code>C:\\Users\\KullaniciAdi\\Belgelerim\\WebProjesi<\/code> veya <code>~\/Documents\/WebProject<\/code> dizininde bulunuyorsa, a\u015fa\u011f\u0131daki komutla o dizine ge\u00e7i\u015f yap\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>cd \/path\/to\/your\/project<\/code><\/pre>\n<\/div>\n<p>Proje klas\u00f6r\u00fcn\u00fcz\u00fcn i\u00e7ine girdikten sonra, bu klas\u00f6r\u00fc bir Git deposu olarak ba\u015flatmak i\u00e7in a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>git init<\/code><\/pre>\n<\/div>\n<p>Bu komut, projenizin k\u00f6k dizininde gizli bir <code>.git<\/code> klas\u00f6r\u00fc olu\u015fturur. Bu klas\u00f6r, Git&#8217;in projenizin t\u00fcm versiyon ge\u00e7mi\u015fini ve yap\u0131land\u0131rma bilgilerini depolad\u0131\u011f\u0131 yerdir. <code>.git<\/code> klas\u00f6r\u00fcn\u00fc do\u011frudan d\u00fczenlememelisiniz; Git t\u00fcm i\u015flemleri sizin i\u00e7in y\u00f6netecektir. <code>git init<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, terminalde &#8220;Initialized empty Git repository in \/path\/to\/your\/project\/.git\/&#8221; (Bo\u015f Git deposu \/path\/to\/your\/project\/.git\/ dizininde ba\u015flat\u0131ld\u0131) gibi bir mesaj g\u00f6rmelisiniz. Bu, projenizin art\u0131k bir Git deposu oldu\u011fu ve versiyon kontrol\u00fc alt\u0131nda oldu\u011fu anlam\u0131na gelir.<\/p>\n<h4>Dosyalar\u0131 Takip Etmeye Ba\u015flama (Staging)<\/h4>\n<p>Git deposunu ba\u015flatt\u0131ktan sonra, projenizdeki dosyalar\u0131 Git&#8217;in takip etmesi i\u00e7in &#8220;staging area&#8221; (haz\u0131rl\u0131k alan\u0131) ad\u0131 verilen bir alana eklemeniz gerekir. Bu alan, bir sonraki commit&#8217;inizde hangi de\u011fi\u015fikliklerin kaydedilece\u011fini belirlemenizi sa\u011flar. Projenizdeki t\u00fcm dosyalar\u0131 haz\u0131rl\u0131k alan\u0131na eklemek i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<div class=\"code-container\">\n<pre><code>git add .<\/code><\/pre>\n<\/div>\n<p><code>git add .<\/code> komutu, mevcut dizindeki t\u00fcm yeni ve de\u011fi\u015ftirilmi\u015f dosyalar\u0131 haz\u0131rl\u0131k alan\u0131na ekler. E\u011fer sadece belirli dosyalar\u0131 eklemek isterseniz, <code>git add dosya_adi.html<\/code> veya <code>git add klasor_adi\/<\/code> gibi komutlar\u0131 kullanabilirsiniz.<\/p>\n<p>Hangi dosyalar\u0131n takip edildi\u011fini veya haz\u0131rlanmak \u00fczere bekledi\u011fini g\u00f6rmek i\u00e7in <code>git status<\/code> komutunu kullanabilirsiniz:<\/p>\n<div class=\"code-container\">\n<pre><code>git status<\/code><\/pre>\n<\/div>\n<p>Bu komut, size hangi dosyalar\u0131n takip edildi\u011fini (tracked), hangilerinin haz\u0131rlanmak \u00fczere bekledi\u011fini (staged) ve hangilerinin hen\u00fcz takip edilmedi\u011fini (untracked) g\u00f6sterir. \u0130lk kez <code>git add .<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, t\u00fcm dosyalar\u0131n\u0131z\u0131n &#8220;Changes to be committed&#8221; (Kaydedilecek de\u011fi\u015fiklikler) ba\u015fl\u0131\u011f\u0131 alt\u0131nda ye\u015fil renkte listelendi\u011fini g\u00f6rmelisiniz.<\/p>\n<h4>\u0130lk Commit&#8217;inizi Yapma<\/h4>\n<p>Dosyalar\u0131n\u0131z\u0131 haz\u0131rl\u0131k alan\u0131na ekledikten sonra, bu de\u011fi\u015fiklikleri projenizin ge\u00e7mi\u015fine kal\u0131c\u0131 olarak kaydetme zaman\u0131 gelmi\u015ftir. Bu i\u015fleme &#8220;commit&#8221; denir. Her commit, projenizin belirli bir anl\u0131k g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc (snapshot) temsil eder ve bir mesajla a\u00e7\u0131klan\u0131r. \u0130yi bir commit mesaj\u0131, yap\u0131lan de\u011fi\u015fiklikleri \u00f6zetlemeli ve neden yap\u0131ld\u0131\u011f\u0131n\u0131 a\u00e7\u0131klamal\u0131d\u0131r. \u0130lk commit&#8217;iniz i\u00e7in genellikle &#8220;Initial commit&#8221; (\u0130lk kay\u0131t) gibi bir mesaj kullan\u0131l\u0131r:<\/p>\n<div class=\"code-container\">\n<pre><code>git commit -m \"Initial commit\"<\/code><\/pre>\n<\/div>\n<p><code>-m<\/code> bayra\u011f\u0131, commit mesaj\u0131n\u0131z\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, ka\u00e7 sat\u0131r\u0131n eklendi\u011fini veya silindi\u011fini belirten bir \u00f6zet sunacakt\u0131r. Tebrikler! Projenizin ilk versiyonunu ba\u015far\u0131yla kaydettiniz. Art\u0131k projenizin ge\u00e7mi\u015fini <code>git log<\/code> komutuyla g\u00f6r\u00fcnt\u00fcleyebilirsiniz:<\/p>\n<div class=\"code-container\">\n<pre><code>git log<\/code><\/pre>\n<\/div>\n<p>Bu komut, t\u00fcm commit&#8217;lerinizi (yazar, tarih, mesaj ve benzersiz bir kimlik ile birlikte) listeleyecektir. Yerel projeniz art\u0131k Git&#8217;in g\u00fc\u00e7l\u00fc versiyon kontrol\u00fc alt\u0131nda. Bir sonraki ad\u0131mda, bu yerel depoyu GitHub&#8217;da olu\u015fturaca\u011f\u0131m\u0131z uzak bir depoya nas\u0131l ba\u011flayaca\u011f\u0131m\u0131z\u0131 g\u00f6rece\u011fiz.<\/p>\n<h3>GitHub&#8217;da Yeni Bir Depo (Repository) Olu\u015fturma S\u00fcreci: Dijital Evinizi Haz\u0131rlay\u0131n<\/h3>\n<p>Yerel projenizi Git ile versiyon kontrol\u00fc alt\u0131na ald\u0131n\u0131z ve ilk commit&#8217;inizi yapt\u0131n\u0131z. \u015eimdi s\u0131ra geldi bu projenin \u00e7evrimi\u00e7i bir kopyas\u0131n\u0131 GitHub&#8217;da olu\u015fturmaya. GitHub&#8217;daki depolar, projenizin kodunu bar\u0131nd\u0131r\u0131r, di\u011fer geli\u015ftiricilerle i\u015f birli\u011fi yapman\u0131z\u0131 sa\u011flar ve projenizin herkese a\u00e7\u0131k veya \u00f6zel olmas\u0131n\u0131 kontrol etmenize olanak tan\u0131r. Bu b\u00f6l\u00fcm, GitHub \u00fczerinde yeni bir depo (repository) olu\u015fturma s\u00fcrecini ad\u0131m ad\u0131m anlatacakt\u0131r.<\/p>\n<h4>GitHub&#8217;da Yeni Depo Olu\u015fturma Ad\u0131mlar\u0131<\/h4>\n<ol>\n<li><strong>GitHub Hesab\u0131n\u0131za Giri\u015f Yap\u0131n:<\/strong> Web taray\u0131c\u0131n\u0131zdan GitHub&#8217;a giri\u015f yap\u0131n.<\/li>\n<li><strong>Yeni Depo Olu\u015fturma Sayfas\u0131na Gidin:<\/strong>\n<ul>\n<li>Ana sayfada sol \u00fcst k\u00f6\u015fede bulunan &#8220;New&#8221; (Yeni) d\u00fc\u011fmesine t\u0131klayabilirsiniz.<\/li>\n<li>Alternatif olarak, sa\u011f \u00fcst k\u00f6\u015fedeki &#8220;+&#8221; simgesine t\u0131klay\u0131p a\u00e7\u0131lan men\u00fcden &#8220;New repository&#8221; (Yeni depo) se\u00e7ene\u011fini se\u00e7ebilirsiniz.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Depo Bilgilerini Girin:<\/strong> A\u00e7\u0131lan sayfada, yeni deponuz i\u00e7in baz\u0131 bilgiler girmeniz istenecektir:\n<ul>\n<li><strong>Repository name (Depo ad\u0131):<\/strong> Bu, deponuzun ad\u0131 olacakt\u0131r. Projenizin ad\u0131yla ayn\u0131 olmas\u0131 iyi bir uygulamad\u0131r (\u00f6rne\u011fin, <code>web-projem<\/code> veya <code>ilk-github-projesi<\/code>). Depo adlar\u0131 genellikle k\u00fc\u00e7\u00fck harflerle ve kelimeler aras\u0131nda tire (-) kullan\u0131larak yaz\u0131l\u0131r.<\/li>\n<li><strong>Description (A\u00e7\u0131klama &#8211; iste\u011fe ba\u011fl\u0131):<\/strong> Projenizin ne hakk\u0131nda oldu\u011funu k\u0131saca a\u00e7\u0131klayan bir c\u00fcmle ekleyebilirsiniz. Bu a\u00e7\u0131klama, deponuzu ziyaret edenlerin projeniz hakk\u0131nda h\u0131zl\u0131ca bilgi edinmesine yard\u0131mc\u0131 olur.<\/li>\n<li><strong>Public (Herkese A\u00e7\u0131k) veya Private (\u00d6zel):<\/strong>\n<ul>\n<li><strong>Public:<\/strong> Deponuz herkese a\u00e7\u0131k olacakt\u0131r. Herkes kodunuzu g\u00f6rebilir, klonlayabilir ve katk\u0131da bulunabilir. A\u00e7\u0131k kaynak projeler i\u00e7in idealdir.<\/li>\n<li><strong>Private:<\/strong> Deponuz sadece sizin ve davet etti\u011finiz ki\u015filerin eri\u015fimine a\u00e7\u0131k olacakt\u0131r. Gizli veya ki\u015fisel projeler i\u00e7in uygundur.<\/li>\n<\/ul>\n<p>                Projenizin gereksinimlerine g\u00f6re bir se\u00e7im yap\u0131n.<\/li>\n<li><strong>Initialize this repository with a README (Bu depoyu bir README ile ba\u015flat &#8211; iste\u011fe ba\u011fl\u0131):<\/strong> Bu se\u00e7ene\u011fi <strong>i\u015faretlemeyin<\/strong>. \u00c7\u00fcnk\u00fc yerel projeniz zaten dosyalar i\u00e7eriyor ve biz bu dosyalar\u0131 GitHub&#8217;a g\u00f6nderece\u011fiz. E\u011fer i\u015faretlerseniz, GitHub&#8217;da otomatik olarak bir README dosyas\u0131 olu\u015fturulur ve bu, yerel projenizle birle\u015fme (merge) s\u0131ras\u0131nda \u00e7ak\u0131\u015fmalara neden olabilir.<\/li>\n<li><strong>Add .gitignore (Bir .gitignore ekle &#8211; iste\u011fe ba\u011fl\u0131):<\/strong> Bu se\u00e7ene\u011fi de \u015fimdilik bo\u015f b\u0131rak\u0131n. <code>.gitignore<\/code> dosyas\u0131, Git&#8217;in takip etmesini istemedi\u011finiz dosyalar\u0131 (\u00f6rne\u011fin, ge\u00e7ici dosyalar, derlenmi\u015f \u00e7\u0131kt\u0131lar, hassas bilgiler i\u00e7eren yap\u0131land\u0131rma dosyalar\u0131) belirtmek i\u00e7in kullan\u0131l\u0131r. Bunu daha sonra manuel olarak ekleyebilirsiniz.<\/li>\n<li><strong>Choose a license (Bir lisans se\u00e7 &#8211; iste\u011fe ba\u011fl\u0131):<\/strong> A\u00e7\u0131k kaynak projeler i\u00e7in bir lisans se\u00e7mek \u00f6nemlidir. \u015eimdilik bunu da bo\u015f b\u0131rakabilirsiniz.<\/li>\n<\/ul>\n<\/li>\n<li><strong>&#8220;Create repository&#8221; (Depo olu\u015ftur) d\u00fc\u011fmesine t\u0131klay\u0131n:<\/strong> T\u00fcm bilgileri girdikten sonra, sayfan\u0131n alt\u0131ndaki ye\u015fil d\u00fc\u011fmeye t\u0131klay\u0131n.<\/li>\n<\/ol>\n<p>Deponuz ba\u015far\u0131yla olu\u015fturuldu\u011funda, GitHub sizi yeni deponuzun sayfas\u0131na y\u00f6nlendirecektir. Bu sayfada, deponuzu yerel Git deponuzla nas\u0131l ili\u015fkilendirece\u011finize dair baz\u0131 talimatlar g\u00f6receksiniz. \u00d6zellikle &#8220;Quick setup \u2014 if you\u2019ve done this kind of thing before&#8221; (H\u0131zl\u0131 kurulum \u2014 daha \u00f6nce bu t\u00fcr bir \u015fey yapt\u0131ysan\u0131z) ba\u015fl\u0131\u011f\u0131 alt\u0131nda yer alan SSH ba\u011flant\u0131 linki bizim i\u00e7in \u00f6nemli olacakt\u0131r. Bu link genellikle <code>git@github.com:KullaniciAdiniz\/DepoAdiniz.git<\/code> \u015feklinde olur. Bu ba\u011flant\u0131y\u0131 kopyalay\u0131n, \u00e7\u00fcnk\u00fc bir sonraki ad\u0131mda yerel deponuzu bu uzak depoya ba\u011flamak i\u00e7in kullanaca\u011f\u0131z.<\/p>\n<p>Bu ad\u0131mlar\u0131 tamamlad\u0131\u011f\u0131n\u0131zda, projenizin GitHub&#8217;daki &#8220;dijital evi&#8221; haz\u0131r hale gelmi\u015f demektir. Art\u0131k yerel bilgisayar\u0131n\u0131zdaki kodunuzu bu uzak depoya g\u00f6ndermeye haz\u0131rs\u0131n\u0131z.<\/p>\n<h3>Yerel Projeyi GitHub&#8217;a Y\u00fckleme (Push) \u0130\u015flemi: Kodunuzu D\u00fcnyaya A\u00e7\u0131n<\/h3>\n<p>GitHub&#8217;da deponuzu olu\u015fturdu\u011funuza ve yerel projenizi Git ile versiyonlamaya ba\u015flad\u0131\u011f\u0131n\u0131za g\u00f6re, \u015fimdi bu iki ortam\u0131 birbirine ba\u011flaman\u0131n ve yerel kodunuzu GitHub&#8217;a y\u00fcklemenin zaman\u0131 geldi. Bu i\u015flem, projenizin \u00e7evrimi\u00e7i bir yede\u011fini olu\u015fturmakla kalmaz, ayn\u0131 zamanda ba\u015fkalar\u0131yla payla\u015fma ve i\u015f birli\u011fi yapma imkan\u0131 da sunar. &#8220;Push&#8221; (g\u00f6nderme) i\u015flemi, yerel deponuzdaki commit&#8217;leri uzak depoya aktar\u0131r.<\/p>\n<h4>Uzak Depoyu Yerel Git&#8217;e Tan\u0131mlama<\/h4>\n<p>Yerel Git deponuzun, kodunuzu g\u00f6nderece\u011fi GitHub&#8217;daki uzak depoyu bilmesi gerekir. Bu ba\u011flant\u0131y\u0131 kurmak i\u00e7in, projenizin ana dizininde terminali veya Git Bash&#8217;i a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>git remote add origin git@github.com:KullaniciAdiniz\/DepoAdiniz.git<\/code><\/pre>\n<\/div>\n<p>Bu komutta:<\/p>\n<ul>\n<li><code>git remote add<\/code>: Git&#8217;e yeni bir uzak depo ekleyece\u011fimizi s\u00f6yler.<\/li>\n<li><code>origin<\/code>: Uzak depo i\u00e7in verilen varsay\u0131lan takma add\u0131r. Genellikle ilk uzak depo i\u00e7in bu isim kullan\u0131l\u0131r.<\/li>\n<li><code>git@github.com:KullaniciAdiniz\/DepoAdiniz.git<\/code>: Bu, GitHub&#8217;da yeni deponuzu olu\u015fturdu\u011funuzda kopyalad\u0131\u011f\u0131n\u0131z SSH ba\u011flant\u0131 URL&#8217;sidir. Kendi GitHub kullan\u0131c\u0131 ad\u0131n\u0131z ve depo ad\u0131n\u0131zla de\u011fi\u015ftirmeyi unutmay\u0131n.<\/li>\n<\/ul>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, Git art\u0131k <code>origin<\/code> ad\u0131n\u0131n GitHub&#8217;daki deponuzu temsil etti\u011fini bilecektir. Herhangi bir \u00e7\u0131kt\u0131 g\u00f6rmemeniz normaldir; bu, komutun ba\u015far\u0131yla \u00e7al\u0131\u015ft\u0131\u011f\u0131 anlam\u0131na gelir. Uzak depolar\u0131n\u0131z\u0131 listelemek i\u00e7in <code>git remote -v<\/code> komutunu kullanabilirsiniz:<\/p>\n<div class=\"code-container\">\n<pre><code>git remote -v<\/code><\/pre>\n<\/div>\n<p>Bu komut, <code>origin<\/code> ad\u0131n\u0131n hem &#8220;fetch&#8221; (\u00e7ekme) hem de &#8220;push&#8221; (g\u00f6nderme) i\u015flemleri i\u00e7in tan\u0131mland\u0131\u011f\u0131n\u0131 g\u00f6steren iki sat\u0131r \u00e7\u0131kt\u0131 verecektir.<\/p>\n<h4>Yerel Kodunuzu GitHub&#8217;a G\u00f6nderme (Push)<\/h4>\n<p>Uzak depoyu tan\u0131mlad\u0131ktan sonra, yerel deponuzdaki t\u00fcm commit&#8217;leri GitHub&#8217;daki uzak depoya g\u00f6nderebilirsiniz. Bu i\u015flem i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<div class=\"code-container\">\n<pre><code>git push -u origin main<\/code><\/pre>\n<\/div>\n<p>Bu komutta:<\/p>\n<ul>\n<li><code>git push<\/code>: Yerel deponuzdaki de\u011fi\u015fiklikleri uzak depoya g\u00f6nderme komutudur.<\/li>\n<li><code>-u<\/code> (veya <code>--set-upstream<\/code>): Bu bayrak, <code>origin<\/code> uzak deposundaki <code>main<\/code> dal\u0131n\u0131 (branch) yerel <code>main<\/code> dal\u0131n\u0131z i\u00e7in &#8220;yukar\u0131 ak\u0131\u015f&#8221; (upstream) dal\u0131 olarak ayarlar. Bu, gelecekteki <code>git push<\/code> ve <code>git pull<\/code> komutlar\u0131n\u0131 daha k\u0131sa (\u00f6rne\u011fin sadece <code>git push<\/code> veya <code>git pull<\/code>) yazabilece\u011finiz anlam\u0131na gelir, \u00e7\u00fcnk\u00fc Git hangi uzak depoya ve hangi dala i\u015flem yapaca\u011f\u0131n\u0131 bilecektir.<\/li>\n<li><code>origin<\/code>: Kodunuzu g\u00f6nderece\u011fimiz uzak deponun takma ad\u0131.<\/li>\n<li><code>main<\/code>: G\u00f6ndermek istedi\u011finiz yerel dal\u0131n ad\u0131d\u0131r. Git&#8217;in varsay\u0131lan ana dal\u0131 eskiden <code>master<\/code> idi, ancak g\u00fcn\u00fcm\u00fczde \u00e7o\u011fu yeni depo <code>main<\/code> ad\u0131n\u0131 kullanmaktad\u0131r. Kendi yerel dal ad\u0131n\u0131z\u0131 kontrol etmek i\u00e7in <code>git branch<\/code> komutunu kullanabilirsiniz.<\/li>\n<\/ul>\n<p>Komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, Git yerel deponuzdaki t\u00fcm commit&#8217;leri <code>origin<\/code> uzak deposuna g\u00f6nderecektir. E\u011fer SSH anahtarlar\u0131n\u0131z\u0131 do\u011fru yap\u0131land\u0131rd\u0131ysan\u0131z ve anahtar\u0131n\u0131za bir parola belirlediyseniz, sizden bu parolay\u0131 girmeniz istenebilir. Ba\u015far\u0131l\u0131 bir push i\u015fleminden sonra, terminalde genellikle s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f nesnelerin yaz\u0131ld\u0131\u011f\u0131n\u0131 ve dallar\u0131n g\u00fcncellendi\u011fini belirten bir \u00e7\u0131kt\u0131 g\u00f6rmelisiniz.<\/p>\n<p>Bu i\u015flem tamamland\u0131\u011f\u0131nda, web taray\u0131c\u0131n\u0131zda GitHub&#8217;daki deponuzun sayfas\u0131na gidin ve sayfay\u0131 yenileyin. Art\u0131k yerel klas\u00f6r\u00fcn\u00fczdeki t\u00fcm dosyalar\u0131n ve klas\u00f6rlerin GitHub deponuzda g\u00f6r\u00fcnt\u00fclendi\u011fini g\u00f6rmelisiniz. Ayr\u0131ca, yapt\u0131\u011f\u0131n\u0131z commit&#8217;ler deponuzun ge\u00e7mi\u015finde yer alacakt\u0131r.<\/p>\n<p>Tebrikler! \u0130lk projenizi yerel bilgisayar\u0131n\u0131zdan GitHub&#8217;a ba\u015far\u0131yla y\u00fcklediniz. Art\u0131k projeniz \u00e7evrimi\u00e7i ve d\u00fcnyan\u0131n her yerinden eri\u015filebilir durumda. Gelecekteki de\u011fi\u015fiklikleri de benzer \u015fekilde <code>git add .<\/code>, <code>git commit -m \"Mesaj\"<\/code> ve <code>git push<\/code> komutlar\u0131yla kolayca GitHub&#8217;a g\u00f6nderebilirsiniz.<\/p>\n<h3>S\u0131k\u00e7a Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri Nelerdir?<\/h3>\n<p>Git ve GitHub ile \u00e7al\u0131\u015f\u0131rken baz\u0131 yayg\u0131n sorunlarla kar\u015f\u0131la\u015fmak olas\u0131d\u0131r. Bu sorunlar\u0131 tan\u0131mak ve \u00e7\u00f6z\u00fcmlerini bilmek, geli\u015ftirme s\u00fcrecinizi \u00e7ok daha sorunsuz hale getirecektir. \u0130\u015fte en s\u0131k kar\u015f\u0131la\u015f\u0131lan sorunlardan baz\u0131lar\u0131 ve pratik \u00e7\u00f6z\u00fcmleri:<\/p>\n<h4>1. SSH Ba\u011flant\u0131 Sorunlar\u0131<\/h4>\n<p><strong>Sorun:<\/strong> <code>ssh -T git@github.com<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda ba\u011flant\u0131 hatas\u0131 al\u0131yorum veya GitHub, kimli\u011fimi do\u011frulayam\u0131yor.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong><\/p>\n<ul>\n<li><strong>Anahtar\u0131n Do\u011fru Olu\u015fturuldu\u011funu Kontrol Edin:<\/strong> <code>ls -al ~\/.ssh<\/code> komutuyla <code>.ssh<\/code> dizininizin i\u00e7eri\u011fini kontrol edin. <code>id_ed25519<\/code> (gizli) ve <code>id_ed25519.pub<\/code> (a\u00e7\u0131k) dosyalar\u0131n\u0131n var oldu\u011fundan emin olun.<\/li>\n<li><strong>A\u00e7\u0131k Anahtar\u0131n GitHub&#8217;a Eklenip Eklenmedi\u011fini Kontrol Edin:<\/strong> GitHub hesab\u0131n\u0131z\u0131n &#8220;Settings&#8221; (Ayarlar) -> &#8220;SSH and GPG keys&#8221; b\u00f6l\u00fcm\u00fcne gidin ve a\u00e7\u0131k anahtar\u0131n\u0131z\u0131n do\u011fru bir \u015fekilde eklendi\u011finden emin olun. Anahtar\u0131n ba\u015fl\u0131\u011f\u0131 alt\u0131nda parmak izi (fingerprint) de g\u00f6r\u00fcnmelidir.<\/li>\n<li><strong>SSH Ajan\u0131n\u0131 Kontrol Edin:<\/strong> Windows&#8217;ta Git Bash kullan\u0131yorsan\u0131z, SSH ajan\u0131n\u0131n \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 ve anahtar\u0131n\u0131z\u0131n ona eklenip eklenmedi\u011fini kontrol edin:\n<div class=\"code-container\">\n<pre><code>eval \"$(ssh-agent -s)\"\nssh-add ~\/.ssh\/id_ed25519<\/code><\/pre>\n<\/p><\/div>\n<p>        E\u011fer bir parola belirlediyseniz, bu ad\u0131mda parolan\u0131z\u0131 girmeniz gerekecektir.<\/li>\n<li><strong>Do\u011fru SSH URL&#8217;sini Kullan\u0131n:<\/strong> Deponuzun URL&#8217;sinin <code>git@github.com:KullaniciAdiniz\/DepoAdiniz.git<\/code> format\u0131nda oldu\u011fundan emin olun, HTTPS yerine SSH kullan\u0131yorsan\u0131z bu \u00f6nemlidir.<\/li>\n<\/ul>\n<h4>2. Commit Yap\u0131lamamas\u0131 veya Hata Mesajlar\u0131<\/h4>\n<p><strong>Sorun:<\/strong> <code>git commit<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131mda bir hata al\u0131yorum veya de\u011fi\u015fikliklerim kaydedilmiyor.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong><\/p>\n<ul>\n<li><strong>Dosyalar\u0131 Haz\u0131rl\u0131k Alan\u0131na Eklemeyi Unutmay\u0131n:<\/strong> <code>git commit<\/code> yapmadan \u00f6nce de\u011fi\u015fikliklerinizi <code>git add .<\/code> (veya <code>git add dosya_adi<\/code>) ile haz\u0131rl\u0131k alan\u0131na ekledi\u011finizden emin olun. <code>git status<\/code> komutuyla durumu kontrol edebilirsiniz.<\/li>\n<li><strong>Git Kimli\u011finizi Ayarlay\u0131n:<\/strong> Git&#8217;e kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 ve e-posta adresinizi tan\u0131tt\u0131\u011f\u0131n\u0131zdan emin olun.\n<div class=\"code-container\">\n<pre><code>git config --global user.name \"Ad\u0131n\u0131z Soyad\u0131n\u0131z\"\ngit config --global user.email \"e-posta-adresiniz@ornek.com\"<\/code><\/pre>\n<\/p><\/div>\n<p>        Bu bilgiler her commit ile birlikte kaydedilir.<\/li>\n<li><strong>Bo\u015f Commit Yapmaya \u00c7al\u0131\u015fmay\u0131n:<\/strong> E\u011fer hi\u00e7bir de\u011fi\u015fiklik yapmad\u0131ysan\u0131z veya t\u00fcm de\u011fi\u015fiklikleri geri ald\u0131ysan\u0131z, Git bo\u015f bir commit yapman\u0131za izin vermez.<\/li>\n<\/ul>\n<h4>3. Push \u0130\u015flemi Ba\u015far\u0131s\u0131z Oluyor (Failed to Push)<\/h4>\n<p><strong>Sorun:<\/strong> <code>git push<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131mda &#8220;failed to push some refs&#8221; veya benzeri bir hata al\u0131yorum.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong><\/p>\n<ul>\n<li><strong>Uzak Depoda De\u011fi\u015fiklik Var m\u0131?:<\/strong> Bu hata genellikle, siz yerel bilgisayar\u0131n\u0131zda \u00e7al\u0131\u015f\u0131rken uzak depoda (GitHub&#8217;da) ba\u015fka birinin de\u011fi\u015fiklik yapm\u0131\u015f olmas\u0131 durumunda ortaya \u00e7\u0131kar. Bu durumda, \u00f6nce uzak depodaki de\u011fi\u015fiklikleri yerel deponuza \u00e7ekmeniz (pull) gerekir:\n<div class=\"code-container\">\n<pre><code>git pull origin main<\/code><\/pre>\n<\/p><\/div>\n<p>        <code>git pull<\/code> komutu, uzak depodaki de\u011fi\u015fiklikleri yerel deponuza indirir ve birle\u015ftirir. E\u011fer birle\u015ftirme \u00e7ak\u0131\u015fmalar\u0131 (merge conflicts) ya\u015fan\u0131rsa, bunlar\u0131 manuel olarak \u00e7\u00f6zmeniz gerekecektir.<\/li>\n<li><strong>Uzak Depo Tan\u0131ml\u0131 m\u0131?:<\/strong> <code>git remote -v<\/code> komutuyla <code>origin<\/code> uzak deponuzun do\u011fru URL ile tan\u0131mland\u0131\u011f\u0131ndan emin olun.<\/li>\n<li><strong>Do\u011fru Dal\u0131 m\u0131 G\u00f6nderiyorsunuz?:<\/strong> <code>git push origin main<\/code> komutunda, <code>main<\/code> yerine kendi dal ad\u0131n\u0131z\u0131 (\u00f6rne\u011fin <code>master<\/code>) kulland\u0131\u011f\u0131n\u0131zdan emin olun.<\/li>\n<\/ul>\n<h4>4. .gitignore Dosyas\u0131 \u00c7al\u0131\u015fm\u0131yor<\/h4>\n<p><strong>Sorun:<\/strong> <code>.gitignore<\/code> dosyas\u0131na ekledi\u011fim dosyalar hala Git taraf\u0131ndan takip ediliyor veya <code>git status<\/code> \u00e7\u0131kt\u0131s\u0131nda g\u00f6r\u00fcn\u00fcyor.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong><\/p>\n<ul>\n<li><strong>Dosya Zaten Takip Ediliyor Olabilir:<\/strong> E\u011fer bir dosya <code>.gitignore<\/code>&#8216;a eklenmeden \u00f6nce zaten Git taraf\u0131ndan takip ediliyorsa (yani daha \u00f6nce commit edilmi\u015fse), <code>.gitignore<\/code> onu yok saymaz. Bu durumda, dosyay\u0131 Git&#8217;in takibinden kald\u0131rman\u0131z gerekir:\n<div class=\"code-container\">\n<pre><code>git rm --cached dosya_adi\ngit commit -m \"Dosyay\u0131 Git takibinden \u00e7\u0131kar\"\ngit push origin main<\/code><\/pre>\n<\/p><\/div>\n<p>        <code>--cached<\/code> bayra\u011f\u0131, dosyay\u0131 yerel bilgisayar\u0131n\u0131zdan silmeden sadece Git&#8217;in takibinden \u00e7\u0131kar\u0131r.<\/li>\n<li><strong><code>.gitignore<\/code> Dosya Ad\u0131 Do\u011fru mu?:<\/strong> Dosyan\u0131n ad\u0131n\u0131n tam olarak <code>.gitignore<\/code> oldu\u011fundan ve do\u011fru dizinde (genellikle projenin k\u00f6k dizininde) bulundu\u011fundan emin olun.<\/li>\n<li><strong>\u00d6nbelle\u011fi Temizleyin:<\/strong> Bazen Git&#8217;in \u00f6nbelle\u011fini temizlemek sorunu \u00e7\u00f6zebilir:\n<div class=\"code-container\">\n<pre><code>git rm -r --cached .\ngit add .\ngit commit -m \"Git \u00f6nbelle\u011fi temizlendi\"<\/code><\/pre>\n<\/p><\/div>\n<p>        Bu komutlar t\u00fcm dosyalar\u0131 takipten \u00e7\u0131kar\u0131r ve sonra tekrar ekler, <code>.gitignore<\/code> kurallar\u0131n\u0131n yeniden uygulanmas\u0131n\u0131 sa\u011flar.<\/li>\n<\/ul>\n<p>Bu sorunlar ve \u00e7\u00f6z\u00fcmleri, Git ve GitHub&#8217;\u0131 kullan\u0131rken kar\u015f\u0131la\u015fabilece\u011finiz en yayg\u0131n durumlar\u0131 kapsar. Hata mesajlar\u0131n\u0131 dikkatlice okumak ve internette arama yapmak, genellikle sorunlar\u0131n k\u00f6k nedenini bulman\u0131za yard\u0131mc\u0131 olacakt\u0131r. Pratik yaparak ve bu ara\u00e7lar\u0131 s\u0131k\u00e7a kullanarak, bu t\u00fcr sorunlarla ba\u015fa \u00e7\u0131kma beceriniz zamanla geli\u015fecektir.<\/p>\n<h3>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<p>Bu rehber boyunca, yerel bilgisayar\u0131n\u0131zdaki bir projeyi Git versiyon kontrol sistemi ve SSH g\u00fcvenli ba\u011flant\u0131 protokol\u00fc arac\u0131l\u0131\u011f\u0131yla GitHub&#8217;a nas\u0131l ta\u015f\u0131yaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m \u00f6\u011frendiniz. Git&#8217;in ne oldu\u011fundan, GitHub&#8217;\u0131n sa\u011flad\u0131\u011f\u0131 avantajlara, SSH anahtarlar\u0131n\u0131n olu\u015fturulmas\u0131ndan, yerel projenizi Git deposu haline getirmeye ve nihayetinde GitHub&#8217;a y\u00fcklemeye kadar t\u00fcm temel s\u00fcre\u00e7leri ele ald\u0131k. Art\u0131k projenizin ge\u00e7mi\u015fini g\u00fcvenle y\u00f6netebilir, farkl\u0131 versiyonlar aras\u0131nda ge\u00e7i\u015f yapabilir ve projenizi d\u00fcnya genelindeki geli\u015ftiricilerle payla\u015fabilirsiniz. Bu ilk ad\u0131m, a\u00e7\u0131k kaynak d\u00fcnyas\u0131na ve profesyonel yaz\u0131l\u0131m geli\u015ftirme pratiklerine at\u0131lan \u00f6nemli bir ad\u0131md\u0131r. Git ve GitHub, sadece kodunuzu depolamakla kalmaz, ayn\u0131 zamanda i\u015f birli\u011fini kolayla\u015ft\u0131r\u0131r, hatalar\u0131 izlemeyi sa\u011flar ve projenizin geli\u015fimini \u015feffaf hale getirir. Unutmay\u0131n, pratik yapmak m\u00fckemmelle\u015ftirir. \u0130lk projenizi ba\u015far\u0131yla GitHub&#8217;a ta\u015f\u0131d\u0131\u011f\u0131n\u0131za g\u00f6re, \u015fimdi farkl\u0131 dallar (branches) olu\u015fturmay\u0131, birle\u015ftirme (merge) i\u015flemlerini \u00f6\u011frenmeyi ve di\u011fer geli\u015ftiricilerin projelerine katk\u0131da bulunmay\u0131 ke\u015ffetmeye ba\u015flayabilirsiniz. Geli\u015ftirme yolculu\u011funuzda bol \u015fans!<\/p>\n<h4>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h4>\n<ol>\n<li><strong>Git ve GitHub aras\u0131ndaki temel fark nedir?<\/strong>\n<p>Git, yerel bilgisayar\u0131n\u0131zda \u00e7al\u0131\u015fan bir versiyon kontrol sistemidir; projenizin de\u011fi\u015fikliklerini izlemenizi, farkl\u0131 versiyonlar aras\u0131nda ge\u00e7i\u015f yapman\u0131z\u0131 ve ge\u00e7mi\u015fi y\u00f6netmenizi sa\u011flar. GitHub ise, Git depolar\u0131n\u0131z\u0131 bar\u0131nd\u0131ran web tabanl\u0131 bir platformdur. Projelerinizi \u00e7evrimi\u00e7i olarak depolaman\u0131za, di\u011fer geli\u015ftiricilerle i\u015f birli\u011fi yapman\u0131za ve a\u00e7\u0131k kaynak projelerde yer alman\u0131za olanak tan\u0131r. K\u0131sacas\u0131, Git arac\u0131d\u0131r, GitHub ise bu ara\u00e7la olu\u015fturdu\u011funuz projelerinizi bar\u0131nd\u0131ran bir hizmettir.<\/p>\n<\/li>\n<li><strong>Neden SSH yerine HTTPS kullanmamal\u0131y\u0131m?<\/strong>\n<p>Hem HTTPS hem de SSH, GitHub ile kimlik do\u011frulamas\u0131 yapmak i\u00e7in kullan\u0131labilir. Ancak SSH, genellikle daha g\u00fcvenli ve kullan\u0131\u015fl\u0131 kabul edilir. SSH ile bir kez anahtar \u00e7ifti olu\u015fturup a\u00e7\u0131k anahtar\u0131n\u0131z\u0131 GitHub&#8217;a ekledi\u011finizde, her Git i\u015flemi i\u00e7in kullan\u0131c\u0131 ad\u0131 ve \u015fifre veya ki\u015fisel eri\u015fim belirteci (PAT) girmenize gerek kalmaz. Bu, \u00f6zellikle s\u0131k s\u0131k i\u015flem yapan geli\u015ftiriciler i\u00e7in b\u00fcy\u00fck bir kolayl\u0131k sa\u011flar ve g\u00fcvenlik riskini azalt\u0131r. HTTPS ise her i\u015flemde kimlik do\u011frulama bilgisi gerektirir.<\/p>\n<\/li>\n<li><strong><code>git add .<\/code> ve <code>git commit -m \"Mesaj\"<\/code> komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra ne yapmal\u0131y\u0131m?<\/strong>\n<p>Bu iki komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra, de\u011fi\u015fiklikleriniz yerel Git deponuza kaydedilmi\u015f olur. E\u011fer bu de\u011fi\u015fiklikleri GitHub&#8217;daki uzak deponuza g\u00f6ndermek istiyorsan\u0131z, <code>git push origin main<\/code> (veya kulland\u0131\u011f\u0131n\u0131z dal\u0131n ad\u0131yla) komutunu \u00e7al\u0131\u015ft\u0131rman\u0131z gerekir. Bu komut, yerel commit&#8217;lerinizi GitHub&#8217;a aktar\u0131r ve projenizin \u00e7evrimi\u00e7i versiyonunu g\u00fcnceller.<\/p>\n<\/li>\n<li><strong>Yanl\u0131\u015f bir dosyay\u0131 commit ettiysem geri alabilir miyim?<\/strong>\n<p>Evet, Git&#8217;in en b\u00fcy\u00fck avantajlar\u0131ndan biri, yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikleri geri alabilme yetene\u011fidir. E\u011fer bir commit&#8217;i geri almak istiyorsan\u0131z, <code>git revert <commit_hash><\/code> komutunu kullanabilirsiniz. Bu, mevcut commit&#8217;i geri alan yeni bir commit olu\u015fturur. E\u011fer hen\u00fcz push yapmad\u0131ysan\u0131z ve son commit&#8217;inizi tamamen silmek istiyorsan\u0131z, <code>git reset --soft HEAD~1<\/code> (commit&#8217;i geri al\u0131r ama de\u011fi\u015fiklikleri tutar) veya <code>git reset --hard HEAD~1<\/code> (commit&#8217;i ve de\u011fi\u015fiklikleri tamamen siler) komutlar\u0131n\u0131 dikkatlice kullanabilirsiniz. Bu t\u00fcr geri alma i\u015flemleri, \u00f6zellikle push yap\u0131ld\u0131ktan sonra dikkatli kullan\u0131lmal\u0131d\u0131r, \u00e7\u00fcnk\u00fc ba\u015fkalar\u0131n\u0131n i\u015f ak\u0131\u015f\u0131n\u0131 etkileyebilir.<\/p>\n<\/li>\n<li><strong><code>.gitignore<\/code> dosyas\u0131 ne i\u015fe yarar ve nas\u0131l kullan\u0131l\u0131r?<\/strong>\n<p><code>.gitignore<\/code> dosyas\u0131, Git&#8217;in projenizde hangi dosyalar\u0131 veya klas\u00f6rleri takip etmemesi gerekti\u011fini belirtmek i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, ge\u00e7ici derleme dosyalar\u0131 (<code>.class<\/code>, <code>.o<\/code>), ba\u011f\u0131ml\u0131l\u0131k klas\u00f6rleri (<code>node_modules\/<\/code>), yap\u0131land\u0131rma dosyalar\u0131 (<code>.env<\/code>) veya i\u015fletim sisteminin olu\u015fturdu\u011fu \u00f6zel dosyalar (<code>.DS_Store<\/code>) gibi dosyalar\u0131n versiyon kontrol\u00fc alt\u0131nda olmas\u0131na gerek yoktur. Bu dosyalar\u0131 <code>.gitignore<\/code> dosyas\u0131na ekleyerek, Git&#8217;in bunlar\u0131 g\u00f6rmezden gelmesini ve depoyu gereksiz \u015fi\u015fkinlikten korumas\u0131n\u0131 sa\u011flars\u0131n\u0131z. Her sat\u0131ra yok saymak istedi\u011finiz dosya veya klas\u00f6r ad\u0131n\u0131 yazman\u0131z yeterlidir (\u00f6rne\u011fin, <code>*.log<\/code> t\u00fcm log dosyalar\u0131n\u0131, <code>node_modules\/<\/code> ise bu klas\u00f6r\u00fc yok sayar).<\/p>\n<\/li>\n<\/ol>\n<p>#Git #GitHub #VersiyonKontrol\u00fc #WebGeli\u015ftirme #SSH #KodY\u00f6netimi<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/local-project-git-github-ssh\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/local-project-git-github-ssh<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, projelerinizi y\u00f6netmek, ekip \u00fcyeleriyle i\u015f birli\u011fi yapmak ve yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikleri g\u00fcvenle takip etmek art\u0131k bir l\u00fcks de\u011fil, bir zorunluluktur.","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-44265","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 Y\u00fckseli\u015f - 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-yukselis\/\" \/>\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 Y\u00fckseli\u015f\" \/>\n<meta property=\"og:description\" content=\"Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, projelerinizi y\u00f6netmek, ekip \u00fcyeleriyle i\u015f birli\u011fi yapmak ve yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikleri g\u00fcvenle takip etmek art\u0131k bir l\u00fcks de\u011fil, bir zorunluluktur.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-22T18:05:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-22T18:05:26+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-yukselis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/\"},\"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 Y\u00fckseli\u015f\",\"datePublished\":\"2026-08-22T18:05:04+00:00\",\"dateModified\":\"2026-08-22T18:05:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/\"},\"wordCount\":5168,\"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-yukselis\/#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-yukselis\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/\",\"name\":\"\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub'a Git ve SSH ile Y\u00fckseli\u015f - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-08-22T18:05:04+00:00\",\"dateModified\":\"2026-08-22T18:05:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/#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 Y\u00fckseli\u015f\"}]},{\"@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 Y\u00fckseli\u015f - 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-yukselis\/","og_locale":"tr_TR","og_type":"article","og_title":"\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub'a Git ve SSH ile Y\u00fckseli\u015f","og_description":"Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda, projelerinizi y\u00f6netmek, ekip \u00fcyeleriyle i\u015f birli\u011fi yapmak ve yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikleri g\u00fcvenle takip etmek art\u0131k bir l\u00fcks de\u011fil, bir zorunluluktur.","og_url":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-08-22T18:05:04+00:00","article_modified_time":"2026-08-22T18:05:26+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-yukselis\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/"},"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 Y\u00fckseli\u015f","datePublished":"2026-08-22T18:05:04+00:00","dateModified":"2026-08-22T18:05:26+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/"},"wordCount":5168,"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-yukselis\/#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-yukselis\/","url":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/","name":"\u0130lk GitHub Projem: Yerel Klas\u00f6rden GitHub'a Git ve SSH ile Y\u00fckseli\u015f - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-08-22T18:05:04+00:00","dateModified":"2026-08-22T18:05:26+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ilk-github-projem-yerel-klasorden-githuba-git-ve-ssh-ile-yukselis\/#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 Y\u00fckseli\u015f"}]},{"@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\/44265","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=44265"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44265\/revisions"}],"predecessor-version":[{"id":44266,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44265\/revisions\/44266"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=44265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=44265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=44265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}