{"id":708,"date":"2023-01-29T05:59:30","date_gmt":"2023-01-29T02:59:30","guid":{"rendered":"https:\/\/melic.com\/wp1\/?p=708"},"modified":"2023-01-29T05:59:30","modified_gmt":"2023-01-29T02:59:30","slug":"linux-isletim-sistemi-ile-git-kullanmak","status":"publish","type":"post","link":"https:\/\/melic.com\/wp1\/linux-isletim-sistemi-ile-git-kullanmak\/","title":{"rendered":"Linux \u0130\u015fletim Sistemi ile Git Kullanmak"},"content":{"rendered":"\n<p>E tabi Linux kullan\u0131yorsan\u0131z komut sat\u0131r\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131z\u0131 ya da kullanmaya ba\u015flad\u0131\u011f\u0131n\u0131z\u0131 var say\u0131yorum.<\/p>\n\n\n\n<p>Bu arada bu yaz\u0131m\u0131 haz\u0131rlarken Git ve Github nedir bildi\u011finizi varsayarak yaz\u0131m\u0131 haz\u0131rlamak istiyorum ama emin olun hi\u00e7 bir \u015fey bilmeseniz bile ne demek istedi\u011fimi anlayabilece\u011finiz kadar basit anlataca\u011f\u0131m. Ama yine de baz\u0131 terimleri yani komutlar\u0131 daha iyi anlamak ad\u0131na pull request, branch, repository ve merge pull request nedir \u00f6\u011frenmenizi tavsiye ediyorum. Evet terimleri ingilizce kullanaca\u011f\u0131m , akl\u0131n\u0131z\u0131 T\u00fcrk\u00e7e yazarak daha fazla kar\u0131\u015ft\u0131rmak istemiyorum \u00e7\u00fcnk\u00fc.<\/p>\n\n\n\n<p>Yine de emin olabilirsiniz Github&#8217;\u0131 ger\u00e7ek manada ba\u015far\u0131l\u0131 bir \u015fekilde kullanman\u0131z\u0131n yolu Linux i\u015fletim sisteminiz ile Github beraber kullanman\u0131zdan ge\u00e7iyor. Hadi ba\u015flayal\u0131m! <\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><strong>Linux i\u00e7in Git&#8217;i kurmak<\/strong><\/li><\/ol>\n\n\n\n<p>\u00d6ncelikle Linux i\u015fletim sistemine kurabilmek i\u00e7in terminal ekran\u0131n\u0131z\u0131 a\u00e7\u0131yorsunuz. \u0130ster Ubuntu kullan\u0131n ister ba\u015fka bir distro komutlar \u00fc\u00e7 a\u015fa\u011f\u0131 be\u015f yukar\u0131 ayn\u0131 olacak. Sadece paket komutlar\u0131 farkl\u0131l\u0131k g\u00f6sterecektir ama komutu anlaman\u0131n sizi zorlamayaca\u011f\u0131na emin olabilirsiniz.<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@melic:~# sudo apt-get install git<\/code><\/pre>\n\n\n\n<p>Esas\u0131nda komut sat\u0131r\u0131na dikkat ederseniz sudo yazmama gerek yok ancak sizin i\u00e7in \u00f6zellikle yazd\u0131m keza ben zaten root yetkisi ile terminaldeyim, ama Ubuntu distrosu zaten her halukarda &#8220;sudo&#8221; komutu kullanman\u0131z\u0131 istiyor yani kesinlikle yanl\u0131\u015f bir yaz\u0131m de\u011fil.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\"><li><strong>Github&#8217;un Kurulum Ayarlar\u0131<\/strong><\/li><\/ol>\n\n\n\n<p><br>Git&#8217;i sisteminize sorunsuz kurduktan sonra ayarlar\u0131 yapman\u0131z gerekiyor.Bunun i\u00e7in Github hesab\u0131n\u0131z olmal\u0131 keza bu bilgileri kullanaca\u011f\u0131z yoksa olu\u015fturman\u0131z\u0131 rica ediyorum.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@melic:~# git config --global user.name \"kullanici.adi\"\nroot@melic:~# git config --global user.email \"mail@adresiniz.com\"<\/code><\/pre>\n\n\n\n<p>yukar\u0131da t\u0131rnak i\u00e7erisinde yazd\u0131\u011f\u0131m &#8220;kullan\u0131c\u0131.adi&#8221; ve &#8220;mail@adresiniz.com&#8221; yerine githubda olu\u015fturdu\u011funuz kendi kullan\u0131c\u0131 ve mail adresinizi yazmal\u0131s\u0131n\u0131z.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\"><li><strong>Repo Olu\u015fturma (\u00c7al\u0131\u015fma Alan\u0131)<\/strong><\/li><\/ol>\n\n\n\n<p>Git&#8217;i kurup Github&#8217;i konfig\u00fcre etti\u011fimize g\u00f6re art\u0131k bir \u00e7al\u0131\u015fma alan\u0131 yani repo olu\u015fturma zaman\u0131 geldi. Bunun i\u00e7in \u00f6ncelikle bilgisayar\u0131n\u0131zda kullanaca\u011f\u0131n\u0131z bir dizin olu\u015fturmal\u0131 ve onun i\u00e7ine girmelisiniz. Mesela &#8220;TestRepo&#8221; diyebiliriz hem dizine hem de reponuzun ad\u0131na.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@melic:~# git init TestRepo<\/code><\/pre>\n\n\n\n<p>&#8220;init&#8221; komutu ile &#8220;TestRepo&#8221; ad\u0131nda bo\u015f bir \u00e7al\u0131\u015fma alan\u0131 yaratm\u0131\u015f oluyoruz. Bu komut ile \/root\/TestRepo\/.git\/ alt\u0131nda bo\u015f bir \u00e7al\u0131\u015fma alan\u0131 olu\u015facakt\u0131r.<\/p>\n\n\n\n<p>Sizin kullan\u0131c\u0131 ve distro durumunuza g\u00f6re \u00e7\u0131kt\u0131 de\u011fi\u015febilir mesela \u00e7al\u0131\u015fma alan\u0131n\u0131z yukar\u0131daki komut ile \/home\/kullanici\/TestRepo\/.git\/ ; o y\u00fczden \u015fa\u015f\u0131rmay\u0131n ekranlar\u0131m\u0131z ayn\u0131 olmaz ise.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\"><li><strong>Bir tane README dosyas\u0131 olu\u015ftural\u0131m<\/strong><\/li><\/ol>\n\n\n\n<p>\u015eimdi \u00e7al\u0131\u015fma alan\u0131n\u0131z\u0131n i\u00e7erisine bir \u015feyler koyal\u0131m de\u011fil mi? <\/p>\n\n\n\n<p>\u0130lk yaratman\u0131z\u0131 \u00f6nerece\u011fim \u015fey projenizin ya da \u00e7al\u0131\u015fma alan\u0131n\u0131z\u0131n i\u00e7eri\u011finin ne oldu\u011funu a\u00e7\u0131klayabilece\u011finiz README dosyas\u0131 olmal\u0131. Bu dosya zaten default i\u00e7eri\u011fi metin(text) dosyas\u0131d\u0131r , ama isterseniz html de olabilir. \u015eimdilik biz text dosyas\u0131 yaratal\u0131m.<\/p>\n\n\n\n<p>Ben \u00e7al\u0131\u015faca\u011f\u0131n\u0131z dizinde oldu\u011funuzu varsaym\u0131\u015ft\u0131m ama de\u011filsek de \u00f6nemli de\u011fil ilgili dizine girelim. Nas\u0131l m\u0131 ? \u0130\u015fte b\u00f6yle :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@melic:~# cd TestRepo<\/code><\/pre>\n\n\n\n<p>Do\u011fru dizine girdi\u011finiz zaman yapmam\u0131z gereken README dosyas\u0131n\u0131 olu\u015fturmak.Bunun i\u00e7in &#8220;gedit&#8221; , &#8220;touch&#8221;, &#8220;echo&#8221; gibi komutlar\u0131 kullanarak bu dosyay\u0131 olu\u015fturabilirsiniz. Ben basit ve anla\u015f\u0131l\u0131r olmas\u0131 i\u00e7in &#8220;echo&#8221; komutunu kullanmay\u0131 tercih ediyorum.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@melic:~\/TestRepo# echo \"Bu bir test \u00e7al\u0131\u015fma alan\u0131d\u0131r\" > README<\/code><\/pre>\n\n\n\n<p>Bilgisayar\u0131m\u0131zda README dosyas\u0131 olu\u015ftu peki sonraki ad\u0131m nedir? <\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\"><li><strong>Reponuza Yani \u00c7al\u0131\u015fma Alan\u0131na Dosyalar\u0131 Ekleme<\/strong><\/li><\/ol>\n\n\n\n<p>\u0130\u015fte zurnan\u0131n z\u0131rt dedi\u011fi yer buras\u0131, AMAN D\u0130KKAT! Bu ad\u0131mda her \u015feyi github sunucunuza y\u00fckleyip endeksledi\u011fimiz yer. Bu her \u015fey dediklerimiz ilk defa kar\u015f\u0131 tarafa y\u00fcklemek istedi\u011finiz metin dosyalar\u0131 oldu\u011fu gibi yaz\u0131l\u0131m\u0131n\u0131z veya program\u0131n\u0131z da olabilir, hatta halihaz\u0131rda zaten sitenizde olan bir dosya bile olabilir. Art\u0131k yeni versiyon bilgisi ile art\u0131k \u00e7al\u0131\u015fma alan\u0131na ekleyebilirsiniz.<\/p>\n\n\n\n<p>Malum demin README dosyas\u0131n\u0131 eklemi\u015ftik, hadi bir tane bir tane program dosyas\u0131 ekleyelim mesela ad, ilkprogramim.cpp( \u00e7ok basit bir c++ uygulamas\u0131 yapaca\u011f\u0131z).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include &lt;iostream>\r\nusing namespace std;\r\nint main(){\r\n cout &lt;&lt; \"Hello World\" &lt;&lt; endl;\r\n return 0;\r\n}<\/code><\/pre>\n\n\n\n<p>Yukar\u0131dka kodu bu dosyan\u0131n i\u00e7erisine yaz\u0131p kaydetmelisiniz. \u015eu anda iki tane dosyam\u0131z oldu; biri README di\u011feri de ilkprogramim.cpp. Yazmam\u0131z gereken komut :<\/p>\n\n\n\n<p><strong>&#8220;git add&#8221;<\/strong><\/p>\n\n\n\n<p>Bu komut ile istedi\u011finiz kadar dosyay\u0131 ya da dizini indexe atabilmeniz m\u00fcmk\u00fcn.Bu arada index dedi\u011fim \u015fey esas\u0131nda bir tampon alan\u0131 kastediyorum direkt repo i\u00e7erisinde dosyalar\u0131n\u0131z yaz\u0131lmaz.Var olan dosyalar\u0131 kourmak ve versiyonlamak i\u00e7in bu gerekli bir s\u00fcre\u00e7tir ve github taraf\u0131ndan otomatik y\u00fcr\u00fct\u00fcl\u00fcr.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@melic:~\/TestRepo# git add README\nroot@melic:~\/TestRepo# git add ilkprogramim.cpp<\/code><\/pre>\n\n\n\n<p>\u0130\u015flem tamam &#8230; de\u011fil bir de onaylamak laz\u0131m :D<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\"><li><strong>De\u011fi\u015fiklikleri Commit Etmek (\u0130\u015flemek)<\/strong><\/li><\/ol>\n\n\n\n<p>T\u00fcm dosyalar\u0131 g\u00f6nderdikten sonra ya da \u00e7al\u0131\u015fma alan\u0131m\u0131z olan TestRepo ad\u0131 alt\u0131nda github repoya ekledikten sonra art\u0131k onayabiliriz yani &#8220;Commit&#8221; edebiliriz. Bu sisteme bu son yapt\u0131klar\u0131m\u0131z\u0131 (ekleme\/de\u011fi\u015ftirme\/silme) kabul edip finalize ediyoruz ve sisteme son halini y\u00fckleyece\u011fiz demi\u015f oluyoruz. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@melic:~\/TestRepo# git commit -m \"Bu repo README ve ilkprogramim.cpp dosyalar\u0131n\u0131 bar\u0131nd\u0131r\u0131r\"<\/code><\/pre>\n\n\n\n<p>Evet art\u0131k Github hesab\u0131n\u0131za girip lokal bilgisayar\u0131n\u0131zda haz\u0131rlad\u0131\u011f\u0131n\u0131z dosyalar\u0131m\u0131z\u0131 y\u00fcklemek i\u00e7in \u00e7al\u0131\u015fma alan\u0131n\u0131 olu\u015fturmal\u0131y\u0131z.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"430\" height=\"225\" src=\"https:\/\/melic.com\/wp1\/wp-content\/uploads\/2023\/01\/image.png\" alt=\"\" class=\"wp-image-709\" srcset=\"https:\/\/melic.com\/wp1\/wp-content\/uploads\/2023\/01\/image.png 430w, https:\/\/melic.com\/wp1\/wp-content\/uploads\/2023\/01\/image-200x105.png 200w\" sizes=\"auto, (max-width: 430px) 100vw, 430px\" \/><\/figure>\n\n\n\n<p>Ayn\u0131 isimde yani TestRepo&#8217;yu bu yukar\u0131da resimde g\u00f6rd\u00fc\u011f\u00fcn\u00fcz butonu t\u0131klayarak olu\u015fturabilirsiniz. Bu i\u015flemi tamamlad\u0131\u011f\u0131n\u0131zda lokaldeki reponuzdaki dosyalar\u0131 art\u0131k &#8220;push&#8221; edebiliriz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u00d6nemli Not: Komutu \u00e7al\u0131\u015ft\u0131rmadan \u00f6nce  \"kullanici adi\" ve \"TestRepo\" path i\u00e7erisinde do\u011fru tan\u0131ml\u0131 oldu\u011funa emin olun.\r\n\r\nroot@melic:~\/TestRepo# git remote add origin https:\/\/github.com\/<strong>KullaniciAdi<\/strong>\/<strong>TestRepo<\/strong>.git<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\"><li><strong>Pushing Local Repository to GitHub Repository<\/strong><\/li><\/ol>\n\n\n\n<p>Art\u0131k son ad\u0131m tam senkronizasyon i\u00e7in &#8220;push&#8221; komutu ile lokaldeki repo muzu remote yani uzaktaki repomuza g\u00f6ndermeye geldi :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@melic:~\/TestRepo# git push -f origin master<\/code><\/pre>\n\n\n\n<p>Burada -f komutu Forcing yan g\u00fcncellemleri Github Repo&#8217;nun \u00fczerine g\u00fcncellemek i\u00e7in kulland\u0131\u011f\u0131m\u0131z bir \u00f6zellik.Bunu yapmam\u0131n ba\u015fl\u0131ca sebebi GitHub hesab\u0131n\u0131zda repo yani \u00e7al\u0131\u015fma alan\u0131n\u0131z\u0131 olu\u015ftururken muhtemelen README.md dosyas\u0131 olu\u015fturdunuz, e\u011fer bu \u00f6zellik ile push etmez iseniz bir hata alacaks\u0131n\u0131z.<\/p>\n\n\n\n<p>Bu hatan\u0131n esas\u0131nda sebebi lokal reponuzun GitHub daki reponuzda var olan README dosyas\u0131n\u0131 bilmemesi.<\/p>\n\n\n\n<p>Bunun \u00fcstesinden gelebilmek i\u00e7in de &#8220;pull&#8221; komutu kullanmal\u0131s\u0131n\u0131z.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@melic:~\/TestRepo# git pull\u200b https:\/\/github.com\/KullaniciAdiniz\/TestRepo master<\/code><\/pre>\n\n\n\n<p>Esas\u0131nda size hayat\u0131n\u0131z\u0131n en b\u00fcy\u00fck t\u00fcyosunu vereyim . Unutmay\u0131n \u015fu ritmi yakalarsan\u0131z hayat\u0131n\u0131z \u00e7ok kolay  olacakt\u0131r :<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Add > Commit > Push > Pull > Tekrarla  <\/p><\/blockquote>\n\n\n\n<p>Bu kadar basit ..<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>E tabi Linux kullan\u0131yorsan\u0131z komut sat\u0131r\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131z\u0131 ya da kullanmaya ba\u015flad\u0131\u011f\u0131n\u0131z\u0131 var say\u0131yorum. Bu arada bu yaz\u0131m\u0131 haz\u0131rlarken Git ve Github nedir bildi\u011finizi varsayarak yaz\u0131m\u0131 haz\u0131rlamak istiyorum ama emin olun hi\u00e7 bir \u015fey bilmeseniz bile ne demek istedi\u011fimi anlayabilece\u011finiz kadar basit anlataca\u011f\u0131m. Ama yine de baz\u0131 terimleri yani komutlar\u0131 daha&#8230;<\/p>\n","protected":false},"author":1,"featured_media":453,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,54],"tags":[351,183,349,146,147,71,14,346,348,350,17],"class_list":["post-708","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-genel","category-programala-dilleri-ve-programlamaya-giris","tag-add","tag-command-line","tag-commit","tag-git","tag-github","tag-hello-world","tag-linux","tag-pull","tag-push","tag-readme-md","tag-ubuntu"],"_links":{"self":[{"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/posts\/708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/comments?post=708"}],"version-history":[{"count":1,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/posts\/708\/revisions"}],"predecessor-version":[{"id":710,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/posts\/708\/revisions\/710"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/media\/453"}],"wp:attachment":[{"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/media?parent=708"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/categories?post=708"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/tags?post=708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}