Kurs
Bu eğitimde, Git push ve pull komutlarını kullanma sürecinin yanı sıra hem GitHub Desktop hem de komut satırı üzerinden pull request oluşturmayı adım adım anlatacağım. Bu rehber, kod depolarını yöneten herkes için pratiktir.
Yeni başlıyor olsanız bile bu eğitimdeki tüm adımları takip edebilirsiniz. Ancak Git’e tamamen yeniyseniz, Yeni Başlayanlar için GitHub ve Git Eğitimi içeriğimize göz atın ve ortamınızı Git kurulum rehberimiz ile hazırlayın.
Git Push ve Git Pull Nedir?
Genel düzeyde farklar şunlardır:
git push, yerel commit’lerinizi GitHub gibi uzak bir depoya yüklerken, git pull uzak bir depodaki değişiklikleri indirir ve yerel dalınıza birleştirir. Her iki komut da komut satırından veya GitHub Desktop üzerinden kullanılabilir.
Not: Pull request, birleştirme öncesinde değişiklikleri önermek ve gözden geçirmek için kullanılan bir GitHub özelliğidir — git pull komutuyla aynı şey değildir.
Yerel bir daldaki commit’leri uzak bir depoya göndermek için şunu kullanın:
git push <remote_name> <branch_name>
Başka Bir Not: GitHub artık parola ile kimlik doğrulamayı desteklemiyor. Bunun yerine SSH anahtarları veya kişisel erişim belirteçleri (PAT) kullanın.
GitHub’a Push Etme
Önce push etme fikriyle başlayalım.
Komut Satırını Kullanarak GitHub’a Push Etme
Öğrenmenin en iyi yolu pratik yapmaktır; adımları birlikte uygulayalım.
1. Yeni bir depo oluşturma
Yeni bir depo oluşturmanız ve artı işaretine tıklamanız gerekir.
Gerekli tüm ayrıntıları doldurun; yani depo adı, açıklama ve bu kez ücretsiz olduğu için depoyu herkese açık yapın.

2. Git Bash’i açın
Git Bash’i buradan indirebilirsiniz. UNIX komutlarını izleyen ve işletim sistemiyle etkileşim kurmak için kullanılan bir kabuktur.
3. Masaüstünüzde, geçerli çalışma dizinine yönlendirilmiş yerel projenizi oluşturun
pwd, geçerli dizini yazdırmak için kullanılan ‘print working directory’nin kısaltmasıdır.
Yerel bilgisayarınızda belirli bir yola cd 'path_name' ile gidin. cd komutu ‘change directory’ anlamına gelir ve işletim sisteminizde çalışma dizinini değiştirmek için kullanılır; dosyanızı bulmak için 'path_name', örn. C:/Users/Dell/Downloads/FaceDetect-main verilmelidir. Bu komut, üzerinde çalışmak istediğiniz gerekli dosyayı bulur.
4. Git deposunu başlatın
Depoyu başlatmak için git init kullanın. Bu, projenizin en üst düzeyinde gizli bir .git dizini oluşturan boş bir depo yaratır ve tüm revizyon bilgilerini tek bir yerde toplar.

5. Dosyayı yeni yerel depoya ekleyin
Geçerli dizindeki tüm dosyaları hazırlamak için git add . kullanın. Hangi dosyaların aşamalandığını ve ilk commit’inize hazır olduğunu görmek için git status kullanın.

6. Yerel deponuzda aşamalanan dosyaları bir commit mesajı yazarak commit edin
git commit -m 'your message' komutunu çalıştırarak bir commit mesajı oluşturabilirsiniz; bu, aşamalanmış değişiklikleri yerel depoya kaydeder. git commit komutu, commit’lere içerik ve tam açıklama eklemek için -m bayrağını mesaj olarak kullanır; mesaj, “ne değişti” ve “neden değiştirildi” sorularını yanıtlayacak şekilde, emredici kipte ve 50 karaktere kadar yazılır.

7. Uzak deponuzun URL’sini GitHub’dan kopyalayın
Uzak deponun bulunduğu yer olan GitHub hesabınızdan HTTPS veya URL kopyalanır.

8. Kopyaladığınız URL’yi, yani uzak deponuzu, yerel deponuzdaki içeriğin push edileceği yer olarak ekleyin
git remote add origin 'your_url_name'
Yukarıdaki komutta origin uzak adıdır ve uzak URL "https://github.com/Olivia-Smithcoder100/FaceDetection.git" şeklindedir. Bu durumda uzak sunucuyu GitHub olarak görebilirsiniz ve GitHub, uzak depoya eklemek üzere URL sağlar.
9. Yerel deponuzdaki kodu GitHub’a push edin
git push -u origin main yerel içeriği GitHub’a göndermek için kullanılır.
Burada origin varsayılan uzak depo adınızdır ve -u bayrağı “upstream” anlamına gelir; -set-upstream ile eşdeğerdir. main daldır. name.upstream, projeyi klonladığımız depodur.
GitHub kimlik bilgilerinizle kimlik doğrulayın. GitHub’ın Git işlemleri için artık parola ile kimlik doğrulamayı desteklemediğini unutmayın. Bunun yerine kişisel erişim belirteci (PAT) veya SSH anahtarı kullanmanız gerekir.

10. GitHub’da barındırılan deponuzdaki dosyalarınızı görüntüleyin
Artık dosyayı GitHub’da görebilirsiniz.

GitHub Desktop Kullanarak GitHub’a Push Etme
GitHub Desktop, tüm işletim sistemleri için indirilebilir ve yerel deponuzdaki içeriği GitHub gibi uzak bir depoya göndermek için bir GUI (Grafiksel Kullanıcı Arayüzü) sunar.
Tarayıcınızda GitHub hesabınızı açmanız gerekir ve yeni bir depo oluşturma süreci, yani 1. adım, yukarıda “Komut Satırını Kullanarak GitHub’a PUSH” bölümünde anlatıldığıyla aynıdır.
1. "Set up in a Desktop" seçeneğine tıklayın
Aşağıda gösterildiği gibi düğmeye tıklayın; bir açılır pencere gelir ve "Open GitHub desktop" seçeneğine tıklarsınız.

2. GitHub Desktop’ta klonlama
Aşağıda gösterildiği gibi Clone düğmesine tıklayabilirsiniz.
Yeni bir klonlama işleminin ardından yerel bilgisayarınızda, gizli .git dizininin de bulunduğu bir klasör oluşturulur. 
3. Yerel bilgisayarınızdaki gerekli tüm dosyaları, bilgisayarınızdaki klon klasörüne kopyalayın
Gerekli tüm dosyaları, görselleri, README dosyalarını vb. klon klasörüne kopyalamanız gerekir.

4. GitHub Desktop’a geçin ve main dalına commit edin
Klon klasörüne eklenen dosyaların GitHub Desktop’ta da göründüğünü görebilirsiniz. Son olarak mesajınızı yazın ve Commit to main seçeneğine tıklayın.

5. GitHub Desktop’ta dalı yayımlayarak tüm dosyalarınızı GitHub’a yükleyin
Tüm yerel içeriğinizi GitHub’a yayımlamak için Publish Branch seçeneğine tıklayabilirsiniz.

Tüm adımları tamamladıktan sonra deponuzu GitHub’da görüntüleyebilirsiniz.
Git PULL Request
Pull request, bir depoya push ettiğiniz değişiklikler hakkında proje sorumlularını bilgilendirmenizi sağlayan bir GitHub özelliğidir. git pull komutuyla aynı şey değildir — pull request, değişikliklerin ana dala birleştirilmesinden önce bunları önermenin ve gözden geçirmenin bir yoludur.
Bir daldan çekmek için basit komut şudur:
git pull 'remote_name' 'branch_name'
git pull komutu, yerel depoya son commit’leri getiren git fetch ile, uzak bir daldaki değişiklikleri yerel dalınıza birleştiren git merge işlemlerinin birleşimidir. Ayrıca remote_name depo adını, branch_name ise belirli dalın adını ifade eder.
PULL request’i kullanmanın iki farklı yoluna bakacağız.
Komut Satırıyla PULL Request
Aşağıdaki README dosyalarında bir yazım hatası olduğunu görebilirsiniz. README dosyasında "contain" kelimesi "containnns" olarak yanlış yazılmış. Depo sahibi MNALO, Olivia ise işbirlikçi. Olivia hatayı düzeltecek ve bir PULL Request gönderecek. Aşağıda belirli bir örnek üzerinden PULL Request oluşturma sürecini göreceksiniz.
Yukarıdaki dosyada "containnns" kelimesindeki yazım hatasını görebilirsiniz.
1. Depoyu Fork’layın
"Fork", bir deponun kopyasıdır. Bir depoyu fork’lamak, orijinal projeyi etkilemeden özgürce değişiklik denemeleri yapmanıza olanak tanır. (Kaynak)

2. Bilgisayarınızda bash’i açın
cd komutunu kullanarak gerekli yola veya klasöre gitmeniz gerekir; içeriği ls komutuyla görüntüleyebilirsiniz; bu komut dizindeki mevcut tüm dosyaları listeler ve bizim örneğimizde 'README.md' dosyasının mevcut olduğunu görebilirsiniz.

3. Yeni bir dal oluşturun
git checkout -b 'branch_name' komutunu kullanarak yeni bir dal oluşturabilirsiniz. Burada -b bayrağı yeni bir dal oluşturmak için, branch_name ise dala belirli bir ad vermek için kullanılır ve checkout ile yeni oluşturulan dala geçiş yapılır.

4. Bash üzerinden vim kullanarak veya README dosyasını doğrudan düzenleyerek değişiklik yapın
README dosyasında "containnns" kelimesini "contains" olarak düzeltebilirsiniz ve mevcut durumu aşağıdaki komutla görüntüleyebilirsiniz.
5. Dosyayı depoya ekleyin ve commit edin
Aşağıdaki komutları kullanarak ekleme ve commit işlemlerini yapmanız gerekir.

6. Depoyu GitHub’a push edin
git push origin 'branch_name' ile içeriği göndermeniz gerekir. Burada origin uzak depo, 'branch_name' ise yerel içeriğinizi yüklemeniz gereken daldır.

7. GitHub’da belirli bir dal için PULL request açın
GitHub’daki deponuza giderek yeni bir dal olduğunu görebilirsiniz.
Şimdi 8. adıma geçebilirsiniz; ancak yerel deponun upstream depo ile güncellenmesi gerekebilir.
Alternatif olarak, komut satırında git pull-request komutunu kullanarak PULL Request’i tamamlayabilirsiniz; bu, geçerli dalınızı uzak bir depoya push etmenizi gerektirir.

8. Pull request açın
İşlemi tamamlamak için Create pull request düğmesine tıklamanız gerekir.

PULL Request Birleştirildikten Sonra Dalların Silinmesi
Depoyu ana sayfasına gidin ve Pull requests sekmesine tıklayın.

Closed sekmesine tıklayarak yaptığınız tüm PULL Request’lerin listesini görebilirsiniz; ancak şu anda yalnızca bir tane var ve silmek istediğiniz dal ile ilişkili olanı seçmelisiniz.

İşlemi tamamlamak için şimdi Delete branch seçeneğine tıklayabilirsiniz.

Depo sahibi, işbirlikçiler ve diğerleri tarafından yapılan tüm commit’leri, pull request’leri vb. görüntüleyebilir. Başkalarının yaptığı değişiklikler önemli iyileştirmeler, hızlı hata düzeltmeleri vb. olabilir ve projeye eklenir.

Depo sahibi şimdi "Merge pull request" seçeneğine tıklar. Ayrıca aşağıdaki süreçle "Confirm merge" seçeneğine de tıklayacaktır.


README.md dosyasına yapılan son değişiklik ve düzeltilmiş yazım hatası aşağıdadır.

GitHub Desktop ile PULL Request
"imp" adlı dosyada bir yazım hatası vardır; MNALO sahibi, Olivia işbirlikçidir ve GitHub Desktop’tan bir PULL request oluşturmak için aşağıdaki süreci izlerler.
1. Klonlayıp masaüstünde açma
Proje klonlanır ve "Open in Desktop" seçeneğine tıklanır.

2. Yeni bir dal oluşturun
"fix-typo-imp" adlı yeni bir dal oluşturulur.

3. Metin düzenleyiciden imp dosyasında değişiklik yapın
imp dosyasının içeriğini değiştirebilir, yazım hatasını düzeltebilir ve biraz metin ekleyebilirsiniz.
4. Değişiklikleri commit edin
Bir commit mesajı yazılır ve "Commit to fix-typo-imp" seçeneğine tıklanır.

5. Dalı yayımlayın
Şimdi dalı yayımlayabilir ve commit’i GitHub’a push edebilirsiniz.

6. PULL request oluşturun
Create pull request seçeneğine tıklayarak PULL request oluşturabilirsiniz.
Bir mesaj da yazabilir ve ardından tekrar Create pull request seçeneğine tıklayabilirsiniz.

Sonrasındaki süreç, “Komut Satırıyla PULL Request” bölümünde anlatılanlarla aynıdır.
Sonuç
Bir sonraki adım olarak, günlük görevlerle pratik yapmaya devam etmek için GitHub Kavramları kursumuzu deneyin. Ayrıca GitHub iş birliğimizin bir sonucu olarak oluşturulan GitHub Foundations Sertifikamızı almanızı öneririm. Tamamlamak özgeçmişinizde harika durur; ayrıca kursu bitirdiğinizde sınav ücretinde büyük bir indirim var. Son olarak, GitHub Actions’a da bakın; CI/CD iş akışlarında giderek daha fazla kullanılıyorlar ve push/pull işlemleriyle ilişkilidirler.
SSS
Git push komutu nedir?
git push komutu, yerel deponuzdaki içeriği GitHub gibi uzak bir depoya yüklemek için kullanılır. Bu, değişikliklerinizi başkalarıyla paylaşmak veya yerel geliştirmelerinizi herkese açık ya da paylaşımlı bir depoyla eşitlemek için gereklidir.
Git pull request nasıl yapılır?
Git pull request, doğrudan bir Git komutu değil, GitHub tarafından sağlanan ve GitHub’daki bir depoya push ettiğiniz değişiklikler hakkında proje sorumlularını bilgilendirmeye yarayan bir özelliktir. Bunu, deponun fork’unuzda değişiklik yapıp bu değişiklikleri push ettikten sonra GitHub’ın web arayüzü üzerinden bir pull request göndererek başlatırsınız.
git pull ile git fetch arasındaki fark nedir?
git pull iki şey yapar: uzak bir daldaki değişiklikleri çeker ve hemen ardından bunları geçerli dalınıza birleştirir. Öte yandan git fetch yalnızca uzak depodaki değişiklikleri çeker; birleştirme yapmaz, böylece bu değişiklikleri dalınıza entegre etmeden önce gözden geçirebilirsiniz.
Bir pull request birleştirildikten sonra dalı silebilir miyim?
Evet, bir pull request birleştirildikten sonra dalı güvenle silebilirsiniz; dal amacını yerine getirmiş olur. Dalı silmek, depoyu temiz ve yönetilebilir tutmaya yardımcı olur.
Git işlemleri için GitHub Desktop’ı kullanmanın ön koşulları nelerdir?
GitHub Desktop’ı kullanmak için uygulamayı sisteminize indirip kurmanız, bir GitHub hesabınızın olması ve ideal olarak GitHub iş akışına bir miktar aşina olmanız gerekir. Git komutlarının çoğunu tıklanabilir işlemlere dönüştüren, kullanıcı dostu bir arayüzdür.
Bir Git pull request sırasında çakışmaları nasıl çözerim?
Çakışmalar, bir daldaki değişikliklerin başka bir daldaki değişikliklerle çakıştığı ve otomatik olarak birleştirilemediği durumlarda ortaya çıkar. Bunları çözmek için dosyaları elle düzenleyip nihai içeriğe karar vermeniz, değişiklikleri güncellemeniz ve ardından birleştirme sürecini tamamlamanız gerekir. GitHub ve GitHub Desktop içindeki araçlar, bu çakışmaları belirlemenize ve çözmenize yardımcı olabilir.
GitHub neden varsayılan dal adını master’dan main’e çevirdi?
GitHub, kapsayıcı dil uygulamalarına uyum sağlamak için varsayılan dal adını değiştirdi. "master" terimi bazıları tarafından potansiyel olarak hassas görüldüğünden, "main" tarafsız ve açıklayıcı bir alternatif olarak seçildi.

