6 dk okuma

GitHub - Pull Request Nasıl Yapılır: Adım Adım PR

22 Kasım 202108:57

Başlamadan Önce: Git Nedir?

Git, yazılım geliştirme sürecinde kullanılan iki önemli araçtır. Git, kodunuzu depolamanıza ve yönetmenize olanak tanırken, GitHub ise bu kodları dünya genelindeki diğer kullanıcılarla paylaşmanıza olanak tanır. Eğer okumadıysanız, daha detaylı bilgi için ilk olarak Git, GitHub Nedir? Nasıl Kullanılır? başlıklı yazımı okumanızı tavsiye ederim.

5 elements of a perfect pull request
[5 elements of a perfect pull request, Atlassian](https://www.atlassian.com/blog/bitbucket/5-pull-request-must-haves)

Pull Request Nedir?

Kısaca, Pull request (kısaca PR - TR: çekme isteği), yazılım geliştirme sürecinde ekip içi işbirliğini sağlayan ve kod incelemelerini kolaylaştıran önemli bir araçtır. Sadece ekip içi değil, açık kaynaklı projelerde ekip dışından katkı sağlamak isteyen geliştiricilerin de kullandığı bir araçtır.

Genellikle Git gibi versiyon kontrol sistemlerinde kullanılan Pull Request, yeni bir kod değişikliğinin incelenmesi ve onaylanması sürecini yönetir. Bu şekilde projeye katkı sağlamak isteyen ekip üyelerinin ya da geliştiricilerin, projenin sahibine değişiklikleri önerir ve projenin sahibi bu değişiklikleri projeye dahil etmek veya reddetmek için karar verir.

Pull Request (PR) Nasıl Oluşturulur?

Adım 1: Ana Branch'ten Yeni Bir Branch Oluşturma

Pull Request yapmadan önce, değişikliklerinizi içerecek yeni bir branch oluşturmalısınız. Bu, ana kod tabanından ayrılmış bir çalışma alanı sağlar.

Bu yeni branch’a “feature” veya “fix” gibi açıklayıcı bir isim vererek başlatabilirsiniz. Eğer bir ekibe bağlı çalışıyorsanız, ekibin büyük olasılıkla branch ismi için bir standardı vardır. Mesela, Jira gibi bir proje yönetim tool'u kullanıyorsanız, branch ismini orada bağlantılı olacak task ismiyle oluşturabilirsiniz.

Ana branch'ten (genellikle main veya master) yeni bir branch oluşturarak işe başlayalım:

bash
1git checkout -b yeni-branch-adı ana-branch-adı

Burada, git checkout -b komutu, yeni bir branch oluştururken aynı zamanda o branch'e geçiş yapmanızı sağlar. yeni-branch-adı ise oluşturmak istediğiniz yeni branch'in ismidir.

Adım 2: Kodda Değişiklikler Yapma ve Commit Etme

Yeni branch'inizde kod değişikliklerinizi yapın. Bu değişikliklerinizi takip edebilmek ve geri alabilmek için sık sık commit etmeyi unutmayın. Kod değişikliklerini commit etmek için:

bash
1git add .
2git commit -m "Değişikliklerinizi açıklayan bir commit mesajı"

Buradaki “git add .” komutundaki nokta “.” , tüm dosyaları staged area'ya ekler. Staged area, commit edilmeyi bekleyen dosyaların bulunduğu alandır.

Eğer spesifik bir ya da birkaç dosyayı dahil etmek isterseniz, o dosya ya da dosyaların yolunu eklemeniz gerekir.

Örnek:

bash
1git add css/style.css
2git commit -m "Başlıkların arka plan rengi değiştirildi."

Daha fazla değişiklik için yine git add komutu ile eklenecek dosyanın dosya yolunu eklememiz gerekir.

Ardından git commit -m komutu ile staged area'daki dosyaları bir commit haline getirir ve commit mesajı ile birlikte kaydeder.

Adım 3: Yeni Branch'teki Değişiklikleri Push Etme

Güncellemeleri tamamladıktan sonra, yeni branch'teki commitlediğimiz değişikliklerinizi pushluyoruz:

bash
1git push origin yeni-branch

Adım 4: Pull Request Oluşturma

Değişikliklerinizi yaparak ve yeni branch'e pushladıktan sonra, Pull Request oluşturma zamanı geldi. Bunun için Git servis sağlayıcınıza (GitHub, GitLab, Bitbucket vb.) gidin ve yeni bir Pull Request oluşturun.

Pull Request oluştururken, karşılaştırılacak olan branch olarak ana branch'i seçmeyi unutmayın. Yani, açılacak olan Pull Request'in hedefi ana branch, kaynak branch ise yeni branch olmalıdır.

Adım 5: İnceleme ve Onaylama

Pull Request'ınız oluşturulduktan sonra, diğer ekip üyeleri veya proje yöneticisi tarafından incelenecektir. Gerekli düzeltmeler yapılabilir veya ek açıklamalar istenebilir. Son onay alındıktan sonra, değişiklikler ana branch'e birleştirilebilir (merge işlemi).

Adım 6: Birleştirme (Merge) İşlemi

Onay alındıktan sonra, Pull Request birleştirilebilir ve yeni branch üzerinde yaptığınız kod değişiklikleriniz ana branch'e entegre edilmiş olur. Bunun için ekibinizin kullandığı Git servis sağlayıcınızın arayüzünden Pull Request'i birleştirme yani merge işlemini gerçekleştirebilirsiniz. Bu adımla birlikte, Pull Request süreci tamamlandı! Artık kod değişiklikleriniz ana branch'e entegre edilmiş ve proje gelişimine katkıda bulunmuş durumdasınız.

Ek Olarak:

1. Ana Branch'teki Değişiklikleri Çekme (Pull):

Conflict yani çakışma durumunun önüne geçmek için, güncelleme yapmadan önce, ana branch'teki diğer ekip üyelerinin yapmış olabileceği değişiklikleri çekmek önemlidir. Aksi durumda, yaptığınız değişiklikler, ekip üyeleri tarafından yapılmış diğer değişiklikleri ezebilir. Bu, değişikliklerinizi güncel tutmanızı ve olası çakışmaları önlemenizi sağlar:

bash
1git checkout ana-branch-adı
2git pull origin ana-branch-adı

Bu komutlar, ana branch'teki en son değişiklikleri çeker ve yerel depo üzerinde günceller.

2. Yeni Branch'teki Değişiklikleri Birleştirme (Merge):

Ardından, yeni branch'e dönüp, ana branch'teki değişiklikleri yeni branch'inizle birleştirin:

bash
1git checkout yeni-branch
2git merge ana-branch

Bu adımla, ana branch'teki güncellemeleri/değişiklikleri (diğer ekip üyelerinin değişikliklerini) kendi branch'inize entegre etmiş olursunuz.

Conflict Çözme (Conflict Resolution):

Eğer kendi değişikliklerinizle ana branch'teki değişiklikler arasında çakışma (conflict) varsa, Git size bu konuda uyarı verecektir. Bu durumda, çakışan dosyalardaki değişiklikleri çözmeniz gerekecektir. Çakışmaları çözdükten sonra değişiklikleri tekrar commit etmeniz ve gerektiğinde push etmeniz gerekecektir.

Değişiklikleri Commit Etme ve Push Etme:

Conflict'leri (çakışmaları) çözdükten sonra, değişiklikleri tekrar commit edip ve yeni branch'inize push etmeniz gerekmektedir:

bash
1git add .
2git commit -m "Ana branch'teki değişikliklerle birleştirildi"
3git push origin yeni-branch

Bu komutlarla, çözülen çakışmaları kaydedip ve yeni branch'inizi güncelleyerek repo'ya (örneğin GitHub, GitLab, Bitbucket) gönderirsiniz.

Kısaltmalar (flag) Ne Anlama Geliyor?

-u (veya --update): Bu flag, git push komutu ile kullanılır ve uzak sunucuya yerel branch'teki değişiklikleri gönderirken aynı adı taşıyan bir branch olup olmadığını kontrol eder. Eğer aynı adı taşıyan bir başka branch bulunursa, yerel branch ile onu ilişkilendirir (tracking) ve sonraki push işlemlerinde hedef branch olarak otomatik olarak bu uzak branch'i kullanır.

-m (veya --message): Bu flag, git commit komutu ile kullanılır ve bir commit mesajı eklemek için kullanılır. Mesajı komut satırında belirterek, direkt olarak commit işlemi gerçekleştirilir. Örneğin: git commit -m "Değişiklikler eklendi".

-b (veya --branch): Bu flag, git checkout veya git branch komutları ile kullanılır ve bir branch oluştururken veya bir branch'a geçerken kullanılır. Örneğin: git checkout -b yeni-branch komutu, hem yeni bir branch oluşturur hem de o branch'e geçiş yapar.

-d (veya --delete): Bu flag, git branch komutu ile kullanılır ve bir branch'i siler. Örneğin: git branch -d silinecek-branch komutu, silincek-branch adındaki branch'i siler.

-f (veya --force): Bu flag, git push komutu ile kullanılır ve uzak sunucuya yerel branch'teki değişiklikleri zorla (force) gönderir. Özellikle, geçmişte yapılmış bir push işleminin tersine çevrilmesi gerektiğinde veya zorla güncelleme yapılması gerektiğinde kullanılır. Ancak dikkatli kullanılmalıdır, çünkü uzak sunucuda yapılan değişikliklerin üzerine yazılabilir ve veri kaybına neden olabilir.

Sonuç

Sonuç olarak, Pull Request oluşturma süreci, yazılım geliştirme projelerinde işbirliğini kolaylaştıran ve kod kalitesini artıran önemli bir adımdır. Bu süreç, yeni bir özellik eklemek, hata düzeltmek veya mevcut kodu iyileştirmek gibi değişiklikleri, diğer ekip üyeleriyle paylaşmanın ve değerlendirmenin etkili bir yolunu sağlar. Ayrıca, Pull Request süreci, kod incelemeleri sırasında ekip üyelerinin birbirlerinden öğrenmesini ve proje kalitesini artırmasını destekler. Bu adımları takip ederek, projenizin gelişimine katkıda bulunabilir ve ekibinizle uyumlu bir şekilde çalışabilirsiniz.

Umarım bu yazım, PR açmak üzerine sizlere fikir verebilmiştir. Bu yazımı beğendiyseniz, bu bağlantıdan diğer yazılarıma da göz atmayı unutmayın. Hoşça kalın. 🚀


Referanslar

About Pull Requests, GitHub →

Bu yazıyı paylaş

Link kopyalandı!
Mustafa Kürşad Başer

Mustafa Kürşad Başer

Yazılım Mühendisi — Dijital Zanaatkâr

Karmaşık sorunlara zarif çözümler üretmekten keyif alan, tutkulu bir yazılım mühendisi. Kodlamanın ötesinde, teknoloji, sanat ve insan bilincinin kesişim noktalarını keşfetmekle derinden ilgileniyor.

© 2025 Mustafa Kürşad BAŞER. Tüm hakları saklıdır.

Çerez Tercihleri

Size daha iyi bir deneyim sunabilmek için çerezleri kullanıyoruz. Analitik ve reklam amaçlı çerezler hakkında detaylı bilgi için ayarları özelleştirebilirsiniz.