Github

gokcesimge
İstanbul Data Science Academy
6 min readMar 15, 2024

GitHub

GitHub, sürüm kontrolü ve işbirliğine yönelik bir kod barındırma platformudur. Sizin ve başkalarının projeler üzerinde her yerden birlikte çalışmasına olanak tanır.

GitHub Özellikleri:

Sürüm Kontrolü Nedir?

Sürüm kontrolü (ya da version control), bir projedeki dosyaların ve kodun geçirdiği değişiklikleri takip etmek, yönetmek ve depolamak için kullanılan bir sistemdir. Bu sistem, genellikle yazılım geliştirme süreçlerinde kullanılır, ancak aynı prensipler diğer dosya tabanlı işlerde de uygulanabilir. İşte sürüm kontrolünün temel prensipleri:

  • Değişiklik Takibi (Change Tracking): Sürüm kontrolü, her dosyanın ve proje içindeki değişikliklerin ayrıntılı bir şekilde kaydedilmesini sağlar. Her değişiklik, ne zaman yapıldığı, kim tarafından yapıldığı ve yapılan değişikliklerin kendisi gibi bilgiler içerir.
  • Paralel Geliştirme (Parallel Development): Sürüm kontrolü, bir projede aynı anda birden fazla kişinin çalışmasını destekler. Farklı geliştiriciler aynı proje üzerinde bağımsız olarak çalışabilir ve daha sonra bu değişiklikler birleştirilebilir.
  • Geri Alma (Undo): Yanlışlıkla yapılan değişiklikler veya hatalar kolayca geri alınabilir. Bu özellik, geliştiricilere önceki işlevsel sürümlere geri dönme olanağı sağlar.
  • İşbirliği (Collaboration): Sürüm kontrolü, ekip üyelerinin birbirleriyle daha etkili bir şekilde iletişim kurmalarını ve birlikte çalışmalarını sağlar. Herkesin yaptığı değişiklikleri görebilir, yorumlayabilir ve projeye katkıda bulunabilir.
  • İzlenebilirlik (Traceability): Her değişiklik ve geliştirme izlenebilir. Projenin tarihçesi, hangi özelliklerin hangi sürümlerde eklendiği veya değiştirildiği gibi bilgileri içerir.
  • Dalma (Branching) ve Birleştirme (Merging): Geliştiriciler, projeyi farklı yönlere götürmek veya özel özellikler eklemek için dallar oluşturabilirler. Daha sonra, bu dallardaki değişiklikler ana projeye birleştirilebilir.

Sürüm kontrolü, özellikle büyük ve karmaşık projelerde hayati bir öneme sahiptir. Bu sistem, geliştiricilere daha iyi bir işbirliği ve proje yönetimi sağlayarak üretkenliği artırır. Popüler sürüm kontrol sistemleri arasında Git, Mercurial ve Subversion bulunmaktadır. GitHub gibi platformlar da geliştiricilere projelerini barındırma, paylaşma ve işbirliği yapma imkanı sunar.

GitHub Kullanımı

Öncelikle GitHub hesabına ihtiyacınız vardır. Nasıl kod yazacağınızı, komut satırını nasıl kullanacağınızı veya Git’i (GitHub’ın üzerine kurulu olduğu sürüm kontrol yazılımı) nasıl kuracağınızı bilmenize gerek yok.

Repository Oluşturma

Bir repository genellikle tek bir projeyi düzenlemek için kullanılır. Repositorylerde klasörler ve dosyalar, resimler, videolar, e-tablolar ve veri kümeleri, yani projenizin ihtiyaç duyduğu her şey bulunabilir.

Çoğu zaman, repositoryler projeniz hakkında bilgi içeren bir dosya olan README dosyasını içerir. README dosyaları düz metin Markdown dilinde yazılmıştır.

Örnek bir repository oluşturalım “example-repo” adında, kaynakları depoladığınız, hatta başkalarıyla paylaşıp tartıştığınız bir yer olabilir.

  • Sayfanın sağ üst köşesinde + simgesini seçin ve ardından “New Repository” tıklayın.
  • Repository name kutusuna “example-repo” (oluşturmak istediğiniz repository adı) yazın.
  • “Description” kutusuna kısa bir açıklama yazın.
  • Repositorynizin Herkese Açık (Public) mı yoksa Özel mi (Private) olacağını seçin.
  • Add a README file seçin.
  • Create repository’e tıklayın.

Branch Oluşturma

Branch, aynı anda bir repository’nin farklı sürümlerine sahip olmanızı sağlar. Branch repositorynizin bir kopyasıdır. Branch’i diğerlerinden ayrı bir geliştirme yapmak istediğiniz zaman kullanabilirsiniz.

Repositoryniz varsayılan branch olarak kabul edilen main adında bir branch bulunur. Repositorynizde main branchlerin dışında ek branchler oluşturabilirsiniz.

Bir projenin farklı versiyonlarına aynı anda sahip olmak için branchleri kullanabilirsiniz. Bu, main kod kaynağını değiştirmeden bir projeye yeni özellikler eklemek istediğinizde faydalıdır. Farklı branchlerde yapılan çalışmalar, siz onu birleştirene kadar main branch’de görünmeyecektir. Main branch’e kaydetmeden önce denemeler yapmak ve düzenlemeler yapmak için branchleri kullanabilirsiniz.

Main branchin dışında bir branch oluşturduğunuzda, main bracnhin o andaki haliyle bir kopyasını veya anlık görüntüsünü oluşturursunuz. Siz main branch de çalışırken , başka biri main branch de değişiklik yaptıysa, bu güncellemeleri alabilirsiniz.

Hiç bir dosyanın farklı sürümlerini kaydettiniz mi?

  • deneme.txt
  • deneme-edit.txt
  • deneme-edit-incelendi.txt

Branchler GitHub da benzer mantıkla çalışır.

  • “example-repo” nuzda sol üstteki code sekmesine tıklayın.
  • Branch ismi yazabilirsiniz, “new-branch” adında yeni bir branch oluşturalım.
  • “Create branch: new-branch from main” yazan yere tıkladığınızda yeni branch oluşacaktır.

Artık iki branciniz var; main ve new-branch. Şu anda tamamen aynı görünüyorlar. Daha sonra yeni branche değişiklikler ekleyeceğiz.

Making and Commiting Changes

Önceki adımda yeni bir branch oluşturduğunuzda sizi yeni branchiniz “new-branch” , main branch ‘in bir kopyası olarak oluşturuldu.

.Repositorynizdeki dosyalarda değişiklik yapabilir ve kaydedebilirsiniz. GitHub’da kaydedilen değişikliklere commit adı verilir. Her bir işlemin, belirli bir değişikliğin neden yapıldığını açıklayan bir commit mesajı vardır. Commit mesajları, diğer kullanıcıların ne yaptığınızı ve nedenini anlayabilmesi için değişikliklerinizin geçmişini tutar.

  • Oluşturduğunuz new-branch altında README.md dosyasına tıklayın.
  • Dosyayı düzenlemek için “kalem” öğesine tıklayın .
  • Editörde kendiniz hakkında bir şeyler yazın. Farklı Markdown öğeleri kullanmayı deneyin.
  • “Commit changes” seçeneğini tıklayın .
  • “Commit mesage” kutusuna değişikliklerinizi açıklayan bir commit mesajı yazın.
  • Commit changes’e tıklayın .

Bu değişiklikler yalnızca new-branch de README dosyasında yapılacaktır , dolayısıyla bu artık main branchinizden farklı bir hale gelmiştir.

GitHub Çekme İstekleri (Pull Requests) Oluşturma

Artık bracnhinizde değişiklikleriniz olduğuna göre , bir pull request işlemi yapabilirsiniz.

Pull request GitHub’daki işbirliğinin kalbidir. Bir pull request yaptığınızda, değişikliklerinizi öneriyorsunuz ve birisinin yaptığınız değişikliği inceleyip almasını ve bunları kendi branchinde birleştirmesini talep ediyorsunuz. Pull request işlemi, her iki brancteki içerikteki farklılıkları gösterir. Değişiklikler, eklemeler ve çıkarmalar farklı renklerle gösterilir.

Commit ettiğiniz anda, kod bitmeden bir pull request atıp bir tartışma başlatabilirsiniz.

Pull request mesajınızda GitHub’ın özelliğini kullanarak @mention, ister koridorun sonunda ister 10 saat dilimi uzakta olsun, belirli kişilerden veya ekiplerden geri bildirim isteyebilirsiniz.

Hatta pull requesti kendi reponuzda açabilir ve bunları kendiniz birleştirebilirsiniz.

  • “ example-repo” repositoryinzde “pull request” sekmesine tıklayın.
  • New pull request’e tıklayın.
  • Example Comparison kutusunda , new-branch seçtiğinizde main branch ile karşılaştırılarak sonucu göreceksiniz.
  • Karşılaştırma sayfasındaki farklardaki değişikliklere göz atın.
  • Create pull request’e tıklayın .
  • Bir başlık verip ve değişikliklerinizle ilgili kısa bir açıklama yazabilirsiniz. Emojiler ekleyebilir, görselleri ve gifleri sürükleyip bırakabilirsiniz.

Merge

İsterseniz bu adımda new-branch’i, main branch ile birleştireceksiniz. Birleştirme işleminden sonra, new-branch de yaptığınız değişiklikler main branchi ile birleşmiş olacak. .

Bazen pull request işlemi, main kodla çelişen kod değişikliklerine neden olabilir . Herhangi bir çakışma olması durumunda GitHub sizi çakışan kod konusunda uyaracak ve çakışmalar çözülene kadar birleştirmeyi önleyecektir.

Bu geçişte herhangi bir çakışma yaşamamanız gerekir, sonrasında new-branch’i, main branch ile birleştirmeye hazırsınız.

  • Değişiklikleri birleştirmek için pull requestin alt kısmındak merge pull request’e tıklayın.
  • “Confirm merge” tuşuna tıklayın . İsteğin başarıyla birleştirildiğini ve isteğin kapatıldığını belirten bir mesaj alacaksınız ==> “Pull request successfully merged and closed”.
  • Delete branch tıklayın . Artık birleştirildiğine ve değişiklikleriniz main branch’de olduğuna göre, new-branchi güvenle silebilirsiniz.

Projenizde daha fazla değişiklik yapmak isterseniz her zaman yeni bir branch oluşturup bu işlemi tekrarlayabilirsiniz.

Fork a Repo

Başka bir geliştiricinin oluşturduğu projeyi kendi hesabınıza kopyalamanıza Fork adı verilir. Başka bir kullanıcının projesini kendi hesabınıza alıp (Fork) üzerinde çalışarak istediğiniz değişiklikleri yapabilirsiniz.

  • Varsayılan olarak fork işlemini gerçekleştirir, aynı şekilde adlandırılır. İsteğe bağlı olarak fork işlemini ayırt etmek için “Repository name” alanına bir ad yazabilirsiniz.
  • İsteğe bağlı olarak “Description” alanına açıklamasını yazın. İsteğe bağlı olarak , Copy the DEFAULT branch only seçin.
  • Açık kaynaklı projelere katkıda bulunmak gibi birçok fork senaryosu için yalnızca default branch’e kopyalamanız gerekir. Bu seçeneği seçmezseniz tüm branchler yeni çatala kopyalanacaktır.
  • Create fork’a tıklayın.

--

--