GitHub'da Çekme İsteği Nasıl Oluşturulur

0 Hisse senetleri
0
0
0
0

giriiş

Git, işbirlikçi yazılım projelerini daha yönetilebilir hale getiren açık kaynaklı, dağıtılmış bir sürüm kontrol sistemidir. Birçok proje dosyalarını bir Git deposunda saklar ve GitHub gibi platformlar, kod paylaşımını ve katkıyı erişilebilir, değerli ve etkili hale getirmiştir.

Genel depolarında barındırılan açık kaynaklı projeler, kod deposunda yaptığınız değişiklikleri kabul etmesini isteyen çekme istekleri aracılığıyla daha geniş geliştirici topluluğunun katkılarından yararlanır.

Bu eğitim, açık kaynaklı yazılım projelerine katkıda bulunabilmeniz için komut satırı aracılığıyla bir Git deposuna çekme isteği göndermenize yardımcı olacaktır.

Ön koşullar

Git'in yerel makinenizde yüklü olması gerekir. Bu kılavuz, Git'in bilgisayarınızda yüklü olup olmadığını kontrol etmenize ve işletim sisteminiz için kurulum sürecinde size yol gösterecektir.

Ayrıca bir GitHub hesabınız olması veya oluşturmanız gerekecektir. Bunu GitHub web sitesi github.com üzerinden yapabilir ve hesabınıza giriş yapabilir veya hesabınızı oluşturabilirsiniz.

Kasım 2020 itibarıyla GitHub, parola tabanlı kimlik doğrulamayı kaldırdı. Bu nedenle, GitHub depolarına komut satırı üzerinden erişmek için kişisel bir erişim belirteci oluşturmanız veya SSH genel anahtar bilgilerinizi eklemeniz gerekecektir.

Son olarak, katkıda bulunabileceğiniz bir açık kaynaklı yazılım projesi belirlemeniz gerekiyor. Bu giriş bölümünü okuyarak açık kaynaklı projeler hakkında daha fazla bilgi edinebilirsiniz.

Deponun bir kopyasını oluşturun

Bir depo veya kısaca repo, esasen bir projenin kök dizinidir. Depo, belgeler de dahil olmak üzere ilgili tüm proje dosyalarını içerir ve ayrıca her dosyanın düzenleme geçmişini saklar. GitHub'da, depoların birden fazla işbirlikçisi olabilir ve herkese açık veya özel olabilir.

Açık kaynaklı bir proje üzerinde çalışmak için öncelikle deponun kendi kopyasını edinmeniz gerekir. Bunu yapmak için depoyu forklamanız ve ardından yerel bir çalışma kopyasına sahip olmak için klonlamanız gerekir.

Depoyu Çatallandır

Katkıda bulunmak istediğiniz açık kaynaklı projenin GitHub URL'sine tarayıcınızda giderek GitHub'da bir depo oluşturabilirsiniz.

GitHub deposu URL'leri, hem depo sahibiyle ilişkili kullanıcı adını hem de depo adını ifade eder. Örneğin, DigitalOcean Community (kullanıcı adı: do-community), cloud_haiku proje deposunun sahibidir, bu nedenle bu projenin GitHub URL'si şöyledir:

https://github.com/do-community/cloud_haiku

Yukarıdaki örnekte do-community kullanıcı adı, cloud_haiku ise depo adıdır.

Katkıda bulunmak istediğiniz projeyi belirledikten sonra, şu şekilde biçimlendirilmiş olan URL'ye gidebilirsiniz:

https://github.com/username/repository

Veya GitHub arama çubuğunu kullanarak projeyi arayabilirsiniz.

Depo ana sayfasında olduğunuzda, sayfanın sağ üst köşesinde, kullanıcı simgenizin altında bir Fork düğmesi görünecektir:

Çatallanma işlemini başlatmak için Çatallanma düğmesine tıklayın. Tarayıcı pencerenizde, çatallandığınız deponun işlendiğine dair bir bildirim alacaksınız:

İşlem tamamlandıktan sonra tarayıcınız önceki depo sayfasına benzer bir sayfaya yönlendirilecektir; ancak en üstte depo adından önce kullanıcı adınızı göreceksiniz ve URL'de de depo adından önce kullanıcı adınızı göreceksiniz.

Yani yukarıdaki örnekte sayfanın en üstünde do-community/cloud_haiku yerine kullanıcı adınızı/cloud_haiku'yu göreceksiniz ve yeni URL şöyle görünecek:

https://github.com/your-username/cloud_haiku

Depo çatallandığında, kod tabanının yerel bir kopyasına sahip olmak için onu klonlamaya hazırsınız.

Depoyu Simüle Et

Katkıda bulunmak istediğiniz deponun kendi yerel kopyanızı oluşturmak için öncelikle bir terminal penceresi açacağız.

Depo çatalınıza işaret eden bir URL ile birlikte git clone komutunu kullanırız.

Bu URL, yukarıdaki URL ile aynı olacak, ancak artık .git uzantısıyla bitiyor. Yukarıdaki cloud_haiku örneğinde, URL aşağıdaki gibi olacak ve gerçek kullanıcı adınız yerine kullanıcı adınız kullanılacak:

https://github.com/your-username/cloud_haiku.git

Ayrıca, ana depo sayfanızdan ayırdığınız depo sayfanızdaki yeşil "⤓ Kod" düğmesini kullanarak URL'yi kopyalayabilirsiniz. Düğmeye tıkladıktan sonra, URL'nin yanındaki pano düğmesine tıklayarak URL'yi kopyalayabilirsiniz:

URL'yi aldıktan sonra, depoyu klonlamaya hazırız. Bunu yapmak için, git clone komutunu komut satırındaki depo URL'siyle bir terminal penceresinde birleştiriyoruz:

git clone https://github.com/your-username/repository.git

Yeni bir şube oluştur

Ortak bir proje üzerinde çalıştığınızda, siz ve depoya katkıda bulunan diğer geliştiricilerin aynı anda yeni özellikler veya düzeltmeler için farklı fikirleri olacaktır. Bu yeni özelliklerin bazılarının uygulanması uzun sürmezken, bazılarının uygulanması zaman alacaktır. Bu nedenle, iş akışını yönetebilmeniz, kodunuzu izole edebilmeniz ve hangi özelliklerin proje deposunun ana dalına geri döneceğini kontrol edebilmeniz için depoyu dallandırmak önemlidir.

Bir proje deposunun ilk dalı genellikle ana dal olarak adlandırılır. Önerilen bir uygulama, ana daldaki her şeyin dağıtılabilir olduğunu ve böylece başkalarının da istedikleri zaman kullanabileceğini düşünmektir.

Not: Haziran 2020'de GitHub, terminolojisini güncelleyerek varsayılan kaynak kodu dallarını ana dallar yerine ana dallar olarak adlandırdı. Varsayılan dalınız hala ana olarak görünüyorsa, varsayılan dal ayarlarını değiştirerek ana dal olarak güncelleyebilirsiniz.

 

Mevcut bir projeye dayalı bir dal oluştururken, yeni dalınızı ana daldan oluşturmalısınız. Ayrıca, dal adınızın açıklayıcı olduğundan emin olmalısınız. my-branch yerine frontend-hook-migration veya fix-documentation-type gibi bir ad kullanmalısınız.

Terminal penceremizden bir dal oluşturmak için dizinimizi work deposu dizinine değiştiriyoruz. Bu dizine geçmek için gerçek depo adını (örneğin cloud_haiku) kullandığınızdan emin olun.

cd repository

Şimdi git branch komutuyla yeni dalımızı oluşturacağız. Proje üzerinde çalışan diğer kişilerin ne üzerinde çalıştığınızı bilmesi için ona açıklayıcı bir isim verdiğinizden emin olun.

git branch new-branch

Artık yeni dalımız oluşturulduğuna göre, git checkout komutunu kullanarak üzerinde çalışabiliriz:

git checkout new-branch

Git checkout komutunu girdikten sonra aşağıdaki çıktıyı alacaksınız:

Output
Switched to branch 'new-branch'

Alternatif olarak, yukarıdaki iki komutu, aşağıdaki komut ve -b bayrağıyla yeni bir dal oluşturup ona geçerek sıkıştırabilirsiniz:

git checkout -b new-branch

Eğer orijinal duruma geri dönmek istiyorsanız, checkout komutunu orijinal dal adıyla kullanabilirsiniz:

git checkout main

Ödeme, birden fazla şube arasında geçiş yapmanıza olanak tanır, böylece aynı anda birden fazla özellik üzerinde çalışabilirsiniz.

Bu noktada artık var olan dosyaları değiştirebilir veya projenize şubenizde yeni dosyalar ekleyebilirsiniz.

Yerel olarak değişiklikler yapmak

Bir çekme isteği oluşturmayı göstermek için cloud_haiku depo örneğini kullanacağız ve yerel kopyamızda yeni bir dosya oluşturacağız. Yardım talimatlarında açıklandığı gibi yeni bir haiku şiiri ekleyebilmemiz için favori metin düzenleyicinizi kullanarak yeni bir dosya oluşturacağız. Örneğin, nano kullanabilir ve örnek dosyamıza filename.md adını verebiliriz. Markdown için dosyanızı orijinal adıyla ve md. uzantısıyla çağırmalısınız.

nano filename.md

Ardından, yardım talimatlarını izleyerek yeni dosyaya biraz metin ekleyeceğiz. Jekyll şablonunu kullanmamız ve kesik çizgilerle bir haiku eklememiz gerekecek. Aşağıdaki dosya bir örnek dosyadır, çünkü orijinal bir haiku sağlamanız gerekecektir.

---
layout: haiku
title: Octopus Cloud
author: Sammy
---
Distributed cloud <br>
Like the octopuses' minds <br>
Across the network <br>

Metninizi girdikten sonra dosyayı kaydedip kapatın. Nano kullanıyorsanız, bunu CTRL + X, ardından Y ve ENTER tuşlarına basarak yapabilirsiniz.

Mevcut bir dosyayı değiştirdikten veya seçtiğiniz projeye yeni bir dosya ekledikten sonra, dosyayı yerel deponuzda yayınlayabilirsiniz. Bunu git add komutuyla yapabiliriz. Örneğimizde, filename.md, aşağıdaki komutu yazacağız.

git add filename.md 

Oluşturduğumuz dosyanın adını bu komuta aktararak yerel depomuzda yayınlıyoruz. Bu, dosyanızın eklenmeye hazır olmasını sağlar.

Değiştirdiğiniz tüm dosyaları belirli bir dizine eklemek istiyorsanız, aşağıdaki komutla hepsini sahneye koyabilirsiniz:

git add .

Burada nokta veya nokta tüm ilgili dosyaları ekler.

Alt dizinlerdeki değişiklikler de dahil olmak üzere tüm değişiklikleri yinelemeli olarak eklemek istiyorsanız şunu yazabilirsiniz:

git add -A

Veya, tüm yeni dosyaları düzenlemek için git add -all yazabilirsiniz.

Dosyamızı staging yaparak git commit komutu ile yaptığımız değişiklikleri depoya commit etmek istiyoruz.

Değişiklikler yapmak

Commit mesajı, kod katkınızın önemli bir parçasıdır. Bakımcıların ve diğer katılımcıların yaptığınız değişikliği, neden yaptığınızı ve neden önemli olduğunu tam olarak anlamalarına yardımcı olur. Ayrıca, commit mesajları proje genelindeki değişikliklerin geçmiş kaydını sağlayarak, gelecekteki katılımcılara yol boyunca yardımcı olur.

Çok kısa bir mesajımız varsa, -m bayrağını ve tırnak işareti içindeki mesajı kullanarak mesajı yakalayabiliriz. Haiku ekleme örneğimizde, git commit'imiz aşağıdaki gibi görünebilir.

git commit -m "Added a new haiku in filename.md file"

Küçük veya beklenen bir değişiklik olmadığı sürece, iş arkadaşlarımızın katkılarımızdan tam olarak haberdar olması için daha uzun bir commit mesajı eklemek isteyebiliriz. Bu uzun mesajı kaydetmek için, varsayılan metin düzenleyicisini açan git commit komutunu çalıştırıyoruz:

git commit

Bu komutu çalıştırdığınızda, kendinizi vim düzenleyicisinde bulabilirsiniz ve :q yazarak düzenleyiciden çıkabilirsiniz. Varsayılan metin düzenleyicinizi yapılandırmak istiyorsanız, git config komutunu kullanarak nano'yu varsayılan düzenleyici olarak ayarlayabilirsiniz, örneğin:

git config --global core.editor "nano"

veya vim:

git config --global core.editor "vim"

Git commit komutunu çalıştırdıktan sonra, kullandığınız varsayılan metin düzenleyicisine bağlı olarak terminal pencerenizde düzenlemeniz için aşağıdaki gibi bir belge görüntülenecektir:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch new-branch
# Your branch is up-to-date with 'origin/new-branch'.
# Changes to be committed:
# modified: new-feature.py

Giriş yorumlarının altına commit mesajını text dosyasına eklemeniz gerekmektedir.

Faydalı bir commit mesajı yazmak için, ilk satıra yaklaşık 50 karakter uzunluğunda bir özet eklemelisiniz. Anlaşılır bölümlere ayrılmış bu bölüme, değişikliğin neden yapıldığını, kodun nasıl çalıştığını ve birleştirme sırasında çalışmayı inceleyecek diğer kişilerin anlayabileceği ek bilgiler içeren bir açıklama eklemelisiniz. Projeyi sürdürenlerin katkınızı tam olarak anlayabilmeleri için olabildiğince yardımsever ve proaktif olmaya çalışın.

Değişiklikleri zorlamak

Commit mesajı metin dosyasını kaydedip çıktıktan sonra, Git'in neyi commit ettiğini aşağıdaki komutla kontrol edebilirsiniz:

git status

Yaptığınız değişikliklere bağlı olarak aşağıdakine benzer bir çıktı alacaksınız:

Output
On branch new-branch
nothing to commit, working tree clean

Bu noktada, değişiklikleri çatallı deponuzun geçerli dalına uygulamak için git push komutunu kullanabilirsiniz:

git push --set-upstream origin new-branch

Bu komut, ilerleme hakkında sizi bilgilendirecek bir çıktı sağlayacak ve aşağıdakine benzer olacaktır:

Output
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 336 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/your-username/repository.git
a1f29a6..79c0e80 new-branch -> new-branch
Branch new-branch set up to track remote branch new-branch from origin.

Artık GitHub web sayfanızdaki çatallı depoya gidebilir ve tarayıcıda yaptığınız değişiklikleri görmek için gönderdiğiniz dala gidebilirsiniz.

Bu noktada, ana depoya bir çekme isteğinde bulunmak mümkündür, ancak bunu henüz yapmadıysanız, yerel deponuzun yukarı akış deposuyla güncel olduğundan emin olmanız gerekir.

Yerel Depoyu Güncelle

Diğer katılımcılarla bir proje üzerinde çalışırken, yerel deponuzu projeyle güncel tutmanız gerekir; çünkü otomatik olarak çakışmalara neden olacak bir kod için çekme isteği göndermek istemezsiniz (paylaşımlı kod projelerinde çakışmaların oluşması kaçınılmazdır). Kod tabanınızın yerel sürümünü güncel tutmak için değişiklikleri senkronize etmeniz gerekir.

Öncelikle çatal için bir uzaktan kumanda yapılandıracağız ve ardından çatalı senkronize edeceğiz.

Çatal için bir uzaktan kumanda yapılandırın

Uzak depolar, bir Git projesinde başkalarıyla iş birliği yapmanıza olanak tanır. Her uzak depo, projenin internet veya erişiminiz olan bir ağda barındırılan bir sürümüdür. Kullanıcı ayrıcalıklarınıza bağlı olarak, her uzak depo salt okunur veya okuma-yazma olarak kullanılabilir olmalıdır.

Çatalda yaptığınız değişiklikleri, üzerinde çalıştığınız ana depoyla senkronize edebilmek için, ana depoya işaret eden bir uzak sunucu yapılandırmanız gerekir. Uzak sunucuyu ana depoda yalnızca bir kez ayarlamanız yeterlidir.

Öncelikle hangi uzak sunucuları yapılandırdığınızı kontrol edelim. git remote komutu, daha önce belirttiğiniz tüm uzak depoları listeleyecektir. Dolayısıyla, yukarıda yaptığımız gibi deponuzu klonlarsanız, en azından Git'in klonlanan dizin için varsayılan adı olan kaynak deposunun çıktısını alırsınız.

Terminal pencerenizdeki depo dizininden, -v bayrağıyla birlikte git uzak komutunu kullanarak Git'in depoladığı URL'leri ve bunlara karşılık gelen uzak kısa adlarını (örneğin "origin") görüntüleyelim:

git remote -v

Bir deponun simülasyonunu yaptığımız için çıktımız buna benzer olmalı:

Output
origin https://github.com/your-username/forked-repository.git (fetch)
origin https://github.com/your-username/forked-repository.git (push)

Eğer birden fazla uzaktan kumanda kurduysanız, git remote -v komutu hepsini listeleyecektir.

Ardından, fork ile senkronize edilecek yeni bir uzak depo belirteceğiz. Bu, fork'u oluşturduğumuz orijinal depo olacaktır. Bunu git remote add komutuyla yapacağız.

git remote add upstream https://github.com/original-owner-username/original-repository.git

Bizim cloud_haiku örneğimiz için bu komut şu şekilde olacaktır:

git remote add upstream https://github.com/do-community/cloud_haiku.git

Bu örnekte, upstream, uzak depo için sağladığımız kısa addır; çünkü Git terimlerinde "upstream", klonlama yaptığımız depoyu ifade eder. Bir işbirlikçinin deposuna uzak bir işaretçi eklemek istiyorsak, o işbirlikçinin kullanıcı adını veya kısa ad için kısaltılmış bir takma ad sağlamak isteyebiliriz.

Depo dizininden git remote -v komutunu tekrar kullanarak, uzak işaretçimizin yukarı akış deposuna doğru şekilde eklendiğini doğrulayabiliriz:

git remote -v
Output
origin https://github.com/your-username/forked-repository.git (fetch)
origin https://github.com/your-username/forked-repository.git (push)
upstream https://github.com/original-owner-username/original-repository.git (fetch)
upstream https://github.com/original-owner-username/original-repository.git (push)

Artık tüm URL'yi yazmak yerine komut satırında yukarı akışa başvurabilirsiniz ve çatalınızı ana depoyla senkronize etmeye hazırsınız.

Çatalı senkronize et

GitHub'da ana ve üst akış deposunu referans alan bir uzaktan yapılandırmayı tamamladıktan sonra, güncel tutmak için depo çatalımızı senkronize etmeye hazırız.

Çatalımızı senkronize etmek için, yerel depo dizinimizden bir terminal penceresinde git fetch komutunu kullanarak dalları ve ilgili commit'leri yukarı akış deposundan alıyoruz. Yukarı akış deposuna atıfta bulunmak için "upstream" kısa adını kullandığımızdan, bunu komuta iletiyoruz.

git fetch upstream

Depoyu çatallandırdığımızdan beri yapılan değişiklik sayısına bağlı olarak çıktınız değişebilir ve nesneleri sayan, sıkıştıran ve paketlerini açan birden fazla satır içerebilir. Çıktınız aşağıdaki satırlara benzer olacaktır, ancak projedeki dal sayısına bağlı olarak değişiklik gösterebilir:

Output
From https://github.com/original-owner-username/original-repository
* [new branch] main -> upstream/main

Artık ana dala yapılan commitler upstream/main adı verilen yerel bir dalda saklanıyor.

Depomuzun yerel ana dalına gidelim:

git checkout main
Output
Switched to branch 'main'

Şimdi, yerel ana/upstream şubemiz aracılığıyla erişebileceğimiz ana deponun ana şubesinde yapılan tüm değişiklikleri yerel ana şubemize birleştiriyoruz:

git merge upstream/main

Buradaki çıktı farklı olacaktır, ancak değişiklik yapılmışsa veya depo zaten güncelse bir güncelleme ile başlayacaktır. Depoyu çatalladığınızdan beri herhangi bir değişiklik yapılmadıysa.

Çatalınızın ana dalı artık yukarı akış deposuyla senkronize ve yaptığınız yerel değişiklikler kaybolmaz.

İş akışınıza ve değişiklik yapmak için harcadığınız zamana bağlı olarak, çatalınızı ana depodaki yukarı akış koduyla istediğiniz sıklıkta senkronize edebilirsiniz. Ancak, çakışan kodları otomatik olarak göndermemek için, çekme isteği göndermeden hemen önce çatalınızı mutlaka senkronize etmelisiniz.

Çekme İsteği

Bu noktada ana depoya bir çekme isteği göndermeye hazırsınız.

Çatal deponuza gitmeniz ve ekranın sol tarafındaki yeni çekme isteği düğmesine basmanız gerekiyor.

Sonraki sayfada şubeyi değiştirebilirsiniz. Her iki tarafta da açılır menüden uygun deponuzu ve ilgili şubeyi seçebilirsiniz.

Örneğin, soldaki ana depo şubesini ve sağdaki yeni çatallı depo şubenizi seçtiğinizde, şubelerinizin birleştirilebileceğini belirten bir ekran görmelisiniz. Rekabet eden kod yoksa:

İlgili alanlara bir başlık ve yorum eklemeniz ve ardından Çekme isteği oluştur düğmesine basmanız gerekiyor.

Bu noktada, ana depo sorumluları çekme isteğinizi kabul edip etmeyeceğine karar verecektir. Çekme isteğini kabul etmeden önce bir kod incelemesi göndererek kodunuzu düzenlemenizi veya düzeltmenizi isteyebilirler.

Sonuç

Bu noktada, açık kaynaklı bir yazılım deposuna başarıyla bir çekme isteği gönderdiniz. Bundan sonra, incelenmesini beklerken kodunuzu güncelleyip değiştirdiğinizden emin olmalısınız. Proje yöneticileri kodunuzu yeniden düzenlemenizi isteyebilir, bu yüzden buna hazırlıklı olmalısınız.

Açık kaynak projelerine katılmak ve aktif bir açık kaynak geliştiricisi olmak, ödüllendirici bir deneyim olabilir. Sık kullandığınız yazılımlara düzenli olarak katkıda bulunmak, yazılımın diğer son kullanıcılar için mümkün olduğunca değerli olmasını sağlar.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Ayrıca Şunları da Beğenebilirsiniz