Zeynep Etka Özdemir
Marmara Üniversitesi Tarih Bölümü ÖÄŸrencisi
Marmara Üniversitesi Dijital BeÅŸeri Bilimler AraÅŸtırma Merkezi Stajyeri
​
GitHub’ı ayrıntılı incelemeden önce, Git’in ne olduÄŸuna bir bakalım.
​
Git, kelime anlamı olarak bir British argosudur. “AÄŸzı bozuk kiÅŸi” anlamına gelir. Linus Torvalds tarafından bilinçli olarak seçilmiÅŸtir. Torvalds, Git ismini seçmesini esprili bir ÅŸekilde “ben aÄŸzı bozuk biriyim,” diyerek açıklamıştır.
Logosunda yazılım sistemindeki çalışma mottosunu ifade eden “branchler” yani temsili dallar vardır (bkz. Görsel 1).
Git hakkında bilinen en teknik açıklama bir Versiyon Kontrol Sistemi olduÄŸudur. Daha basit ÅŸekilde ifade edecek olursak Git proje üzerinde oynamaya, deÄŸiÅŸiklikler yapmaya, yaptığımız deÄŸiÅŸiklikleri geri alabilmeye ve birden fazla kiÅŸinin ortak çalışabilmesine olanak saÄŸlıyor. Git, open source bir kaynak olup ücretsiz olarak herkesin kullanımına açıldığı 2005 yılından bu güne alternatifleri arasında en iyi sunucu olarak hizmet veriyor. Git’i incelemek için: https://git-scm.com/.
​
GitHub’a yüklenen dosyalar, Git depolama alanında saklanır. GitHub üzerinde yapılan deÄŸiÅŸiklikler otomatik olarak Git üzerinden takip edilir ve iÅŸlenir. GitHub üzerinden doÄŸrudan yapılıp Git’i dolaylı olarak etkileyen birçok eylem olanağı vardır.
Görsel 1. Git logosu: Dallar
Kullanıcı bu yerel deÄŸiÅŸiklikleri ve ilgili Git verilerini, GitHub’daki merkezi depoya sürekli olarak senkronize edebilir.
​
Git yerel cihaz üzerinde çalışırken, GitHub web üzerinden ulaşıma imkan sunar. Projeniz üzerinden sosyalleÅŸebilir ve çalışmanızı baÅŸkalarının yardımıyla daha iyi hale getirebilirsiniz.
Git’i Kullananların Bilmesi Gereken Terimler
Repository: Revizyon kontrolü altındaki bir dizine denir. Genelde repo olarak kısaltılır. Görsel 2 ve 3’te görüldüÄŸü üzere oluÅŸturulur.
Görsel 2. GitHub’a kaydolduktan sonra Repository kısmına nasıl geçilir?
Görsel 3. Yeni bir Repository oluÅŸturmak için görselde duran ekranı doldurmanız gerekir.
Branch: Proje dallarından her birini ifade eder. Burada Git hakkındaki kilit noktalardan birinin yattığını söyleyebiliriz. Çalıştığımız projenin ana bir dalı vardır. Birçok kiÅŸi bu ana dal üzerine farklı ÅŸekillerde oynayabilir ve deÄŸiÅŸiklikler yapabilir. Bu iÅŸlemler projede kalıcı deÄŸiÅŸiklikler yapmaz, herhangi bir iÅŸin bozulmasına neden olmaz. Farklı kullanıcılar farklı dallar üzerinde gidebilme imkanı bulur (Bkz. Görsel 4).
Görsel 4. Farklı dallar üzerinde gidilen ve ana bir kola sahip olan proje ÅŸeması
Proje üzerinde farklı bir çalışma yapan kullanıcı, projenin sahibine yaptığı yenilik ve deÄŸiÅŸimleri gönderebilir ve proje sahibi tarafından kabul edildiÄŸi takdirde projeye katılımcı olabilir.
​
Master: Repository’nin ana branchidir. Yukarıda ifade ettiÄŸimiz ana dal için kullanılırCommit: Proje üzerinde yapılan deÄŸiÅŸikliÄŸi Git deposunun geçmiÅŸine kalıcı olarak kaydeder.
​
Fork: Repository’in bir kopyasının alınmasıdır. Aynı depodan iki yada daha fazla sahip olmak, diÄŸerleri üzerinde esnek çalışma imkanı saÄŸlar.
​
Pull Request (PR): Fork edilen proje üzerinde deÄŸiÅŸiklikler yaptıktan sonra gerçek Repository’e gönderilerek o projenin sahibi olan geliÅŸtiricinin deÄŸerlendirmesine sunmaktır.
​
Bir projeyi ele alacak olursak profesyonel bir iÅŸ üzerinde deÄŸiÅŸiklik yapmak istendiÄŸi vakit onu folk eder, yapılacak iÅŸlemlerden sonra projenin asıl sahibine PR gönderir ve kabul ederse projeye katılımcı dahi olunabilir.
​
Mutlaka bilmeniz gereken Git komutları
​
Git config: Kullanıcı adı ve mail bilgilerinizi girmenizi saÄŸlayan komuttur. Her proje için ayrı ayrı girilmez, bir kere sisteme iÅŸlemek yeterlidir.
​
Git init: BulunduÄŸunuz dizinde “.git” uzantılı bir dizin yeni Repo oluÅŸturur. Projeyi Git’e baÄŸlayabilmek için ilk etapta yapılır.
Git add: Bu komut ile yapılan deÄŸiÅŸiklikler Git’e eklenir. Commit ile arasında bir basamak iÅŸlem daha bulunur.
Git commit: DeÄŸiÅŸikliklerin “stage” alanından çıkıp Git’e geçiÅŸi tanımlanır. Bu kayıt ile yapılan deÄŸiÅŸiklikler yerel depoya (local repository) kaydedilir.
Git status: Git Repository’de durumunu gösterir. Aktif olduÄŸun branch üzerinde yapılan deÄŸiÅŸiklikleri görme olanağı saÄŸlar.
Git branch: Yeni branch oluÅŸturmaya yarar. Projeye yeni bir ‘dal’ uzatma imkanı verir.
Git checkout: Dilediğimiz branche gitmemizi sağlar. (Git checkout)+ (boşluk) + (gitmek istediğimiz branch adı) şeklinde yazılır.
Git merge: Branchleri masterla, yani çıkardığımız ek proje iÅŸlemlerini ana proje taslağıyla birleÅŸtirmemizi saÄŸlar. Ä°ki branchi birleÅŸtirerek tek projeye çevirir.
Git remote: Yerel depoyu uzaktaki GitHub Repo’ya baÄŸlamaya yarar.
Git clone: Uzak sunucudaki bir projeyi bilgisayara indirmeyi mümkün kılar. Web üzerinden ulaşım saÄŸlanan proje yerel cihaza indirilebilir.
Git pull: Uzak sunucudaki deÄŸiÅŸiklikleri veya herhangi bir projeyi yerel cihaza çekmek için kullanılır, güncel veri alınır. Proje güncellenmiÅŸ olur. (BaÅŸka bir kullanıcının yaptığı deÄŸiÅŸikliÄŸi güncel veri olarak edinmeyi saÄŸlar)
Git push: Yerel cihazda yapılan deÄŸiÅŸiklikleri uzak sunucuya yani GitHub’a gönderme iÅŸlemidir.
Git komutları hakkında daha çok bilgi için:
https://gist.github.com/tahaipek/84be6e736f618e6426b7e1f61ee46a6b
​
​
​
Ocak 2023’te 100 milyondan fazla geliÅŸtiriciye ve 28 milyonu halka açık olmak üzere 420 milyondan fazla depoya sahip olduÄŸunu açıklayan, Haziran 2023’ten beri ise dünyanın en büyük kaynak kodu sunucusu olan GitHub’ın temel amacı yazılım geliÅŸtirmenin sürüm kontrolünü ve sorun izleme yönlerini kullanıcı için daha kolay hale getirmektir.
​
GitHub’ın kurucuları Chris Wanstrath, PJ Hyett, Tom Preston-Werner ve Scott Chacon ÅŸirketi 8 Åžubat 2008’de hayata geçirdiÄŸinde, bu yolculuÄŸa yöneticisi olmayan, ‘herkesin yönetici’ olduÄŸu bir özyönetim anlayışı ile baÅŸladılar. Buna göre çalışanlar kendilerini ilgilendiren projelerde çalışmayı seçiyorlar ve icra baÅŸkanı tarafından maaÅŸları belirleniyordu.
​
2010 yılına gelindiÄŸinde ise GitHub 1 milyon depoya ev sahipliÄŸi yapıyordu. 2011 yılında bu sayı iki katına ulaÅŸtı. 2015 yılında ABD dışındaki ilk ofisini Japonya’da açan ÅŸirket Haziran 2018’de ise, kurulumundan on sene sonra, tüm okullara ücretsiz eÄŸitim paketleri sunan GitHub Education’ı geliÅŸtirdi.
​
Finansal olarak ise GitHub tüm bu ilerlemesine paralel bir geliÅŸme gösterdi. BaÅŸlangıçta üç kurucusu tarafından finanse edilirken kurulumundan dört yıl sonra, 2012 yılında Andreessen Horowitz tarafından 100 milyon dolar yatırım aldı. 2023’te ise GitHub’ın 1 milyar dolar gelir elde ettiÄŸi yönünde iddialar bulunmaktadır.
​
​
​
Kullanıcıya saÄŸladığı olanaklarla güncel en popüler sosyal kodlama ağı olan GitHub; depolama alanında dosyalarını saklama, proje üzerinde iÅŸ birliÄŸi saÄŸlama, proje üzerindeki deÄŸiÅŸiklikleri takip etme gibi kullanışlı bir içeriÄŸe sahiptir. GeliÅŸtiricinin kodlarını oluÅŸturmasını, yönetmesini, saklamasını ve paylaÅŸmasını saÄŸlar. GitHub üzerinde kayıtlanacak ve güncellenecek kullanıcı verileri sayesinde herhangi bir projenin kaybedilmesi ihtimali de ortadan kalkmış olacaktır. Bir projeye katkı saÄŸlamanın ya da diÄŸer kullanıcıların katkılarından yararlanmanın yanı sıra insanlarla sosyalleÅŸebilir, neler yapıldığını takip edebilir ve program geliÅŸtiricilerle baÄŸlantı kurabilirsiniz.
​
GitHub kompleks ve geniÅŸ çaplı projelerin deÄŸil, bireysel ya da grupla beraber yapılan daha mütevazi çalışmaların yüklendiÄŸi yazılımcılar için geliÅŸtirilmiÅŸ bir sosyal mecradır. ÖrneÄŸin GitHub’a yüklenmiÅŸ projeler büyük çaplı kurulmuÅŸ siteler deÄŸil, bu siteyi geliÅŸtirirken kullanılan bir tuÅŸ, bir tasarım ya da sayfa geçiÅŸi gibi detaylar üzerine yazılmış ve geliÅŸtirilmiÅŸ kodlamalar olabilir. Projesini geliÅŸtirmek, diÄŸerlerinin faydalanması için paylaÅŸmak gibi nedenlerin yanı sıra kullanıcı GitHub’a yüklediÄŸi projeler sayesinde fark edilmeyi de umabilir.
​
​
​
Bir sosyal bilimci olarak GitHub’dan nasıl faydalanacağım, hiç yazılım bilgim yok diyorsanız bu adımları takip edin.
-
GitHub’a kaydolun. Kendinize ait bir hesap oluÅŸturarak giriÅŸ yapın.
-
Ä°lgi alanınıza uygun bir proje seçin. Bunu bulabilmek için arama çubuÄŸuna anahtar kelimeler yazabilirsiniz. Arama sonuçlarında karşınıza çıkacak projeleri inceleyin. Proje hakkındaki tüm bilgileri içeren README dosyasını dikkatlice okuyun.
-
Projenin iÅŸinize yarayacağını düÅŸünüyor ve kullanmak istiyorsanız projeyi indirin. Proje ekranında saÄŸ üst köÅŸede yeÅŸil bir buton olarak karşımıza çıkan “Code” tuÅŸuna basın ve “Download ZIP” seçeneÄŸine tıklayarak projeyi bilgisayarınıza indirin. Dosyayı bilgisayarınızda açtığınızda projeyi kullanabilirsiniz.
-
Proje içerisindeki veri ve kaynaklardan, belgeler, araÅŸtırma raporları, veri setleri gibi içeriklerden faydalanabilirsiniz.
-
Ä°lginizi çeken projeleri “Star” tuÅŸuna basarak beÄŸenebilir ve “Watch” butonuna basarak takibe alabilirsiniz.
-
Son olarak “Issues” sekmesinden proje sayfasında sorular sorabilir ve geri bildirimde bulunabilirsiniz. Bu projeyi kullanırken en verimli yolu izlemenizi saÄŸlar.
GitHub’la çalışmanın birçok yolu vardır. Kullanıcı bunların arasından kendisine en uygun metodu seçer. Tecrübe düzeyi, kiÅŸisel tercihleri, beraber çalıştığı yazılımcılar gibi etkenleri göz önünde bulundurduÄŸunda kullanıcı web üzerinden mi çalışmak istediÄŸine yahut masaüstünde mi çalışacağına karar verebilir.
​
EÄŸer belirli bir proje üzerinde ekip olarak çalışıyorsanız, ekip arkadaÅŸlarınızla en iyi ÅŸekilde iletiÅŸim kurmanızı ve yaptığınız iÅŸlemlerden haberdar olmanızı saÄŸlar. Yazılımcıların yanı sıra projeye katkı yapmak için talepte bulunan herhangi bir kullanıcı da proje için kendi iÅŸlemlerini yapabilir ve yaptığı deÄŸiÅŸimlerle projeyi geliÅŸtirebilir. Aynı imkanı baÅŸka kullanıcıların projeleri için sizler de yapabilirsiniz.
​
​
Github’tan Bir Örnek: Roma Ä°mparatorluÄŸu Haritası
​
BahsettiÄŸimiz özelliklerini tanıyabilmek adına GitHub üzerinden paylaşılmış Roman Empire map (100-300 AD) (EriÅŸim linki: https://github.com/von Orso/Roman_Empire_map) projesini ele alalım. Ä°lgi alanınıza hitap eden yahut iÅŸinize yarayacağını düÅŸündüÄŸünüz bir proje bulduÄŸunuzda GitHub karşınıza deÄŸiÅŸmez ana bir ekran çıkaracaktır. Bu ekranda proje hakkında bilgi, veri dosyası, kod gibi detaylı içerikleri bulabilirsiniz. (bkz. Görsel 5)
Görsel 5. Proje ana ekranı
Ana ekranda karşımıza çıkacak dosya sayısı projeye göre artacak veya azalacaktır. Bu kısımda karşınıza yeterince veri çıkarmayan, içerik hakkında bilgi edinemediÄŸiniz projelerle karşılaÅŸabilirsiniz; bu yazılımcının gösterdiÄŸi özenle alakalı olacaktır. Ele aldığımız projede ve diÄŸer tüm projelerde karşımıza çıkacak olan dosya README kısmıdır. Proje sahibinin kendi projesini anlattığı ve içerik hakkında verdiÄŸi bilgiler bu dosyada görünecek, projenizin anlatısı olacaktır. Katkı saÄŸlayanlar, kodun nasıl kullanabileceÄŸi gibi yönergeler dahil kullanıcıya en geniÅŸ bilgiyi verir. Buna göre ele aldığımız projenin Plotly ve Mapbox kullanılarak oluÅŸturulmuÅŸ bir Roma ÅŸehir haritalandırması olduÄŸunu söyleyebiliriz. Yazılımcı burada kullandığı veri setini nereden aldığına da iÅŸaret etmiÅŸ, proje neticesinde oluÅŸturduÄŸu görselleri paylaÅŸmıştır.
Yüklenen dosyalar projeye göre deÄŸiÅŸecektir. Burada karşımıza dört farklı dosya çıkmaktadır (bkz. Görsel 6). Bunlardan ilki, haritalandırma sürecinde kullanılan verilerin baÄŸlı olduÄŸu Excel dosyasıdır. Ä°kinci iÅŸaret edilen dosya kodlama üzerine bilgi vermekte, diÄŸer iki dosya ise ortaya çıkarılan görselleri paylaÅŸmaktadır (bkz. Görsel 7). Yazılımcı bu verileri istediÄŸi ÅŸekilde dosyalayabilir ve istediÄŸi ÅŸekilde sunabilir. Bu sebeple kullanıcı kimi zaman çok daha karmaşık dosyalarla karşı karşıya kalabilmektedir.
​
Dosyalar içerisinde sık karşılaşılan bazı klasörler ÅŸöyledir:
​
Licence, telif hakkı ve kopyalama iznini belgeler.
Src, projenin kaynak kodlarını içerir. Source kelimesinin kısaltmasıdır. Src klasörü projenin kodlandığı dile göre çeÅŸitli dosyalar barındırabilir. ÖrneÄŸin Python projeleri ‘.py’ uzantılı dosyalar, Java projeleri ‘.java’ uzantılı dosyalar olarak karşımıza çıkar.
Assest, projede kullanılan ve kaynak dosyalar olarak saklanan medya türlerini ifade eder. Görseller, fontlar, videolar, ses dosyaları, ve diÄŸer medya türleri dahildir. Tüm bu dosyalar Assest klasörü içinde organize edilir.
Report, projeye dair raporların, belgelerin ve analizlerin bulunduÄŸu klasör olarak karşımıza çıkar.
Görsel 6. Proje hakkındaki tüm veri ve bilgiler iÅŸaret edilen dosyalarda bulunur
Görsel 7. Proje ürünü olarak ortaya çıkarılmış Roma ÅŸehirleri haritası
GitHub üzerinden yayınlanan bu projeler henüz bir ürün olarak sunulmamış olabilir. Bir web sitesi, uygulama, görsel olarak deÄŸil yalnızca bir kod olarak yüklenmiÅŸ olan bu projeleri nasıl kullanabileceÄŸimiz ise yeni bir soruyu doÄŸurmaktadır. Kullanıcı GitHub üzerinden karşılaÅŸtığı projenin kodlamasını kopyalayarak yerelinde bunu çalıştırabilir (bkz. Görsel 8), ÅŸayet gerekli olursa geliÅŸtirebilir. ÖrneÄŸin bir kütüphane derlemesini kopyalayan kullanıcı, kütüphane içerisindeki veriyi geniÅŸleterek tekrar hizmete sunabilir. Ä°lk incelediÄŸimiz proje için ise ÅŸöyle bir örnek vermek uygun olabilir: Kullanıcı Roma ÅŸehirleri üzerine ekleyeceÄŸi yeni verileri Excel dosyasına aktarır, kod yazımını buna göre düzenleyerek aynı görseli daha kapsamlı olarak tekrar canlandırabilir.
Görsel 8. Proje üzerinde çalışmak için kodu buradan indirin
GitHub tüm özelliklerine raÄŸmen en büyük faydayı kullanıcı için saÄŸlar. Herhangi bir kodlamanızı paylaÅŸmak yahut sosyalleÅŸmek istemiyorsanız dahi, çalıştığınız alanda yapılmış ve iÅŸinize yarayacak projeleri bir araç olarak kullanmanıza imkân tanır. Bir tarihçi GitHub üzerinden Osmanlı Türkçesi transkripsiyonu üzerine kodlama bulabilirken, bir sosyolog sosyo-ekonomik aÄŸ üzerine yapılmış bir istatistik çalışmasından faydalanabilir.
​
Åžayet kodlama hakkında hiçbir bilginiz yoksa bir kullanıcı olarak yapay zekadan yardım almayı unutmayın! EÄŸer belirli düzeyde yazılım bilginiz var ise proje üzerinde çalışmak ve branch eklemek hakkında daha fazla bilgi için:
​
GitHub maskotu, beÅŸ kolu olan insan vücudu üzerinde bir ahtapot kafasıyla tasvir edilir. Karakteri Simon Oxley yaratmıştır. GitHub maskotunu Octocat olarak adlandırdıktan sonra, GitHub kullanıcıları Octocat’in özelleÅŸtirilmiÅŸ yüzlerce versiyonunu oluÅŸturdular ve bunlar The Octodex’te sergilenmekte. Göz atmak için: https://octodex.github.com/
Görsel 9. GitHub maskotu
GitHub kullanım açısından kolay bir arayüze sahip olması ile de kullanıcıya kendini sevdiriyor. 2008’den beri GitHub yaygın olarak kullanılmasına ve bu alanı domine etmesine raÄŸmen GitLab, Launchpad ve Bitbucket gibi alternatiflerin de sık olarak tercih edildiÄŸini söylemek mümkün.
​
GitHub saÄŸladığı hizmetlerin yanı sıra öÄŸrenciler için GitHub ÖÄŸrenci GeliÅŸtirici Paketi adı altında yeni bir program sundu. Program dahilinde Bitnami, Crowdflower, DigitalOcean, DNSimple, HachHands, Namecheap, Orchestra, Screenhero, SendGrid, Stripe, Travis Cl ve Unreal Engine ile ortaklık kuruldu. Paketi incelemek için: https://education.github.com/pack.
GitHub’ın olanak tanıdığı Education.github.com (EriÅŸim linki: GitHub Education · GitHub) üzerinden çalıştıkları ortak firmalarla ilgili indirimler ve eÄŸitimleri takip edebilirsiniz. Bunun için öÄŸrenci olduÄŸunuzu ispatlamanız yeterli.
​
VerdiÄŸimiz bilgilere ek olarak ÅŸunu da söylemek gerekir ki, okuyacağınız ya da izleyeceÄŸiniz hiçbir kaynak GitHub’ı denemek kadar fayda saÄŸlamayacaktır. DoÄŸru yönlendiricilerle beraber bu iÅŸe hızlıca baÅŸlamak ve yanılarak öÄŸrenmek ilerlemenin en iyi yolu olacaktır.
​
GitHub’ı keÅŸfetmeye çalışırken ÅŸu videolardan faydalanabilirsiniz:
-
Ä°ngilizce: Git and GitHub Tutorial for Beginners - YouTube
-
Git üzerinden web sitesi kurmak: GITHUB'DA TAMAMEN ÜCRETSÄ°Z WEBSITE YAYINLAMA ! (youtube.com)
GitHub’ı sosyal medya hesapları üzerinden takip etmek isterseniz, bu da mümkün!
Twitter: GitHub (@github) / X
Facebook: GitHub | San Francisco CA | Facebook
Linkedin: GitHub | LinkedIn
Youtube: GitHub - YouTube
Twitch: GitHub - Twitch
Tiktok: GitHub (@github) Resmi | TikTok