Git ve Github nedir?

Git ve Github nedir?

Bugün hala aramızda github kolaylığından haberi olmayan/olsada kullanmayan yazılımcılar/şirketler var! Henüz kullanmaya başlamayan/bilmeyenler için Github

Yazılım projelerinde en büyük sorunlardan biri, kodlama yaptığınız sayfaları, -özellikle proje yöneticiniz titiz bir şekilde inceliyorsa- paylaşma ve kontrol edilmesi için yollama kısmında yaşanıyor. Çoğu zaman 1 proje üzerinde birden fazla coder çalıştığından, coder’ların gönderdiği sayfaları birbiri üzerine kaydedilip büyük problemlere yol açıyor.

 

Gelin bir örnek vererek açıklayalım;

Bir web sitesi projesi üzerinde çalıştığımızı düşünelim. Bu projede çalışan 5 tane coder ve bir tane de proje yöneticisi/takım lideri (adınızı siz koyun) olsun. index sayfamızda da 1000 satır kod olsun ve bu 5 yazılımcımızda index sayfası üzerinde farklı geliştirmeler yapıyor olsun.

yazılımcı[1] 1 ile 200’üncü satır arasında;

yazılımcı[2] 201 ile 401’inci satır arasında;

yazılımcı[3] 401 ile 601’inci satır arasında;

yazılımcı[4] 601 ile 801’inci satır arasında;

yazılımcı[5] 801 ile 1000’inci satır arasında;

çalıştığını düşünelim. Bu arkadaşlar kodları yazdıkca ftp üzerinden server’a atsın. Sırası ile 1. , 2. , 3. , 4. ve 5. yazılımcımız dosyayı server’a gönderdiğinde ne olacak? tabiki dosyayı en son gönderen 5’inci yazılımcının yolladığı dosya, diğer 4 yazılımcının yolladığı dosyayı ezecek ve serverda sadece 5. yazılımcının yolladığı dosya olacak. Ayrıca yazılımcıların işlerini kontrol edecek olan takım lideri/proje yöneticisi her kimse, kontrol etmek istese ne yapacak? tek tek bütün yazılımcılardan index dosyasını alıp, 1000 satır içinde ki tüm değiştirmeleri ekleme çıkarmalrı nasıl takip edecek? Hatta (tecrübelerimden biliyorum) yurt dışında ki müşteriler bile, çoğu zaman projelerinde nasıl kodlama yapıyorsunuz, ya da nereye ne eklentisi yazdınız görmek istediklerinde kaynak kodu sistemlerine kurmadan incetmek için ne yapacaksınız?

İşte tüm bu sorunlara çaredir Github. Bunların dışında motto’larında da yazdığı gibi “social coding”e de imkan veren, coder’ların facebook’udur da diyebiliriz.

Benzerleri, eskiden olan sistemler vs vs.. Hiç biri Git ve Github kadar iyi değil.

Git ve Github nasıl kullanılır?

Öncelikle github hesabı yaratmanız gerekiyor. şuradan hızlıca girip kaydımızı tamamlıyoruz.

Daha sonra, bilmemiz gerekenler şunlar, repository, branch ve fork.

Respository dediğimiz, bizim github üzerinde barındırdığımız projemiz. bunu ana klasör olarak düşünelim.

Branch ‘ı, şimdilik repository’lerimizin alt klasörleri olarak düşünebiliriz.

Fork etmek demek ise, başkasının yarattığı bir repository’i, kendi repository’imiz olarak kopyalamak (ayrıca bilgisayarımızada clone etmeye hazır hale getirmek) etmek demek.

Örneğin; bugrayazar.com adında bir repository’im olsun. Bunuda public olarak github’da yayınlıyor (paylaşıyor) olayım. Siz bu repository’i önce fork edersiniz. Fork ettiğinizde, proje artık sizin klasörünüzdedir. daha sonra git üzerinden kendi bilgisayarınıza clone eder ve localinizde çalışırsınız. Daha sonra bunu tekrar git’e göndermek istediğinizde git status diyip localiniz de ki klasörünüzde değişen/eklenen/silinen dosyaları görürsünüz, ardından eğer nerede ne değişiklik yapmışım diye bakmak istersenizgit diff dosya_adi diyerek dosyada yaptığınız değişiklikleri satır satır görürsünüz, ardından da (git diff opsiyoneldir zorunda değilsiniz, ama yaparsanız daha temiz olur) git add dosyalar şeklinde git’e yollamaya hazır hale getirir, git commit der ve ardından da git push origin hangi_brancha_gönderecekseniz diyip, repository’nize gönderirsiniz. Burada önemli olan birşey var. Değiştirip/oluşturup, gönderdiğiniz dosyalar, benim yarattığım bugrayazar.com repository’mi etkilemez. Siz, kendi branchınıza göndererek, kendi repository’nizdeki dosyaları değiştirirsiniz. Ardından, bunu benim yarattığım ana proje olan repository’de değştirmem için (örneğin sistemde bir açık buldunuz ve bana sorun bu al çözümüde bu) göndereceğinizde, kendi branch’ınızda iken (githubda site üzerinden) pull request yaaprsınız. Bende bu pull request’i görür, diff’ine (githubda dosyaalr arasında eklenen çıkarılan satırlar; eklenenler yeşil, çıkarılanlar kırmızı olarak görünür ve bu sayade değişen dosyalarda ne değişmiş nasıl değişmiş kontrol etmesi kolay olur) bakar ve beğenirsem/istersem merge ederim, ve bu sayede, satır satır değişiklikler, tüm dosyanın değiştirilmesi şeklinde değil, gerekli satırların değiştirilmesi şeklinde yenilenir/geliştirilir.

Git status, add, bişeyler dedin de, onları nerede diyeceğiz?

Şimdi, (en kısa zamanda github’a bir tutorial repo yaratıp, bunları okurken denemenizi sağlayacağım) github’da kendinize for ettiğiniz bir repo var. (umarım Mac yada linux kullanıyorsunuzdur (Windows da da cmd prompt üzerinden çalışıyordur ama hiç denemdim) ) ben mac kullanıyorum, terminal üzerinden anlatacağım;
önce şuraki adımları izleyerek bilgisayarımıza sistemimize göre git’i kuruyoruz
Github’a gittik, repository’mizdeyiz, sağ tarafta “ssh clone url” yazan bir yervar, oradaki linki copyalıyoruz (copt to clipboard)
Bilgisayarımzda teminali açıyoruz git clone _link_ dosya_yolu yazıp enter’a basıyoruz
Github üzerinde ki repo’muz bilgisayarımızda ki belirttiğimiz klasöre kopyalandı (indi)
cd klasör_yolu ile klasörümüzü açıyoruz.
Klasörümüzü açtığımzıda git:: ile çalıştığımızı göreceksiniz.
Artık local’de çalışabiliriz.
bir dosyayı açtık ve düzenledik / yada yeni bir dosya yarattık ve düzenledik ve bunu repo’muza göndermek istiyoruz.
yine terminalden önce git status diyoruz
git bize klasördeki değişen dosyaları listeliyor.
bu dosyalardan göndermek istediğimizde ne değişiklikler yaptık görmek için git diff dosya_adi diyoruz
git bize dosyadıki silinen satırları kırmızı ile, değiştirilen satırları da yeşil ile listeliyor
tamamsa tekrar git status diyip ardından da git add dosya_adi diyoruz. birden fazla göndermek için dosya adlarını aralarında bir boşluk bırakarak ekleyebiliriz.
artık dosyaalrımız gönderilmeye hazır bekliyor.
git commit diyip göndereceğimiz dosyalar için ufak bir açıklama yazıyoruz
artık gönderilecek dosyalarımız commit edildi ve yollanmaya hazır (commit’i bir paket, add’i de bu pakete ekleme yöntemi olarak düşünebiliriz)
dosyaları repo’muzun master branch’ına göndereceğimizi varsayıyorum git push origin master diyerek commit’imizi repo’muzun master branch’ına yolluyoruz. başka bir branch’a yollamak için tahmin edeceğiniz zere master yerine o branch’ın adını yazıyoruz.
ve enter’a basıyoruz!
tadaaa!!!! commit’imiz repo’muza gönderildi.
şimdi tekrar git status diyip bakalım neler kalmış değişiklik olarak. Hiç bir değişiklik yok mu? demekki hepsini yollamışız.
Şimdi tarayıcımız üzerinden github’a gidelim ve repo’muzu açalım,
buradan “pull request” e tıklayığ ardından “new pull request” e tıklayalım ve başlık, açıklama bilgilerini girip, pull request’imizi tamamlayalım.

Özet bir github eğitiminin sonuna geldik. Git ile daha fazla bilmek istediklerinizi git’in eğitim kitabı üzerinden bakabilir, öğrenebilirsiniz.

sorularınız olursa yazıya yorum olarak ekleyebilirsiniz. Tüm yorumları dikkatli inceliyorum ve cevaplıyorum.

Bir sonraki hızlandırılmış eğitimde görüşmek üzere, hoşçakalın.

This article has 1 comments

Leave a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir