GİT — Versiyon Kontrol Sistemi #4 Remote Repo

Muhammet ŞAFAK
7 min readJun 8, 2022

--

Daha önceki iki postta bahsettiğim konular yerel olarak Git olarak kullanımına yönelikti. Yani yaptığınız değişiklik kullandığınız bilgisayar da saklanmaktaydı. Tahmin edebileceğiniz gibi bir ekip ile çalışmak için networklerin nimetlerinden faydalanmak gerekiyor. İşte tam bu nokta da yaptığınız commitleri (sürümleri) bir uzak repo da saklamak ve paylaşmak gerekiyor.

Remote Repo için internet tabanlı github.com, gitlab.com ya da bitbucket.org gibi popüler servisleri kullanabilirsiniz. Elbette yeterli teknik bilgi ve deneyime sahipseniz kendi remote reponuzu da yazmanız mümkün. Burada remote repo kullanımını anlatmak için github.com platformu üzerinden anlatıma devam edeceğim. (Verdiğim komutlar diğer git platformlarında da aynıdır.)

Öncelikle github.com adresine gidip hesabınızı oluşturun. Bu işlem sıradan bir web sitesine kayıt olmaktan farksız olduğu için bu noktalara değinmeyeceğim.

Github ile Remote Repo Oluşturma

github.com web sitesine giriş yaptıktan sonra sağ üst köşede profil resminizin yanındaki + ikonuna tıklayarak açılan menüden New Repository‘e tıklayın.

Ardından uzak repoyu oluşturmanız için aşağıdaki resimde gördüğünüz basit bir form açılacaktır.

Owner uzak (remote) reponun sahibini belirtir.
Repository name, formdaki tek zorunlu alandır ve oluşturacağınız remote reponun adının ne olacağını belirtmelisiniz. (Not : Bir owner için aynı isimde iki aynı isme sahip repo oluşturamazsınız.)
Description repo için birkaç kelimelik kısa bir açıklama yazabileceğiniz alandır.
Public ve ya Private, isimlerinden anlayabileceğiniz gibi oluşturulan reponun herkese açık mı yoksa gizli mi olacağıdır.
Add a README file, seçeneği seçilirse reponun çalışma dizinine README.md dosyası oluşturur. Bu dosyayı daha sonra kendinizde oluşturabileceğiniz için genellikle oluşturulması tercih edilmez.
Add .gitignore, seçeneği seçilirse reponun çalışma dizinine .gitignore dosyasını oluşturur. Bu da yine daha sonradan oluşturulabildiği için tercih konusudur.
Choose a license, seçeneği seçilirse reponun hangi lisans altında lisanslandığını belirtmenizi isteyecek bir form alanı açılır. Buradan kullanacağınız Lisans türünü seçerek LICENSE dosyasının oluşturulmasını sağlar. Yine bu da daha sonradan oluşturulabileceği için tercih konusudur.

Uzak repoyu oluşturmak için formu doldurup Create repository butonuna basabilirsiniz.

Add a README file, Add .gitignore ve Choose a license seçenekleri seçilmediyse boş bir uzak repo oluşmuş olur ve aşağıdakine benzer bir sayfa açılır. Seçeneklerden biri seçildiyse ilgili dosya repo içerisine eklendiği için oluşan repo boş değildir ve haliyle bildiğimiz github repo sayfası açılır.

Yukarıdaki resimde komutların olduğu iki farklı bölüm görüyorsunuz ilk bölümdeki komutlar yerelde yeni bir git oluşturup remote repoya göndermek içindir. İkinci bölümdeki komutlar ise hali hazırda yerel repoda çalıştığınız bir git projeniz varsa bunu remote repoya aktarmanız için gerekli olan komutlardır. Bu komutları sırasıyla inceleyecek olursak;

YENİ LOCAL REPO OLUŞTURUP REMOTE REPO’YA PUSH ETMEK

echo "# YeniUzakRepo" >> README.md : Çalışma dizinim içerisinde README.md dosyasını oluşturur ve içerisine # YeniUzakRepo yazar.

git init : Local repoyu ilgili çalışma dizinim için oluşturur.

git add README.md : Çalışma dizinimdeki README.md dosyasının git tarafından izlenmesi için ekler.

git commit -m "first commit" : Açıklaması first commit olan ilk sürümü oluşturur.

git branch -M main : Mevcut dal adı main olarak değiştirilir.

git remote add origin https://github.com/muhammetsafak/YeniUzakRepo.git : Bu satırda yerel repoya bir uzak repo ataması yapıyoruz. Burada .git ile biten url sizin kullanıcı adınız ve reponuza verdiğiniz isme göre farklı olacaktır.

git push -u origin main : Yerel repoyu remote repoya gönderir.

MEVCUT LOCAL REPOYU REMOTE REPOYA PUSH ETMEK

Bu bölümde yer alan komutların bir önceki bölümdeki son üç komut ile birebir aynı olduğunu görebilirsiniz. Remote repo adresini tanımlar, mevcut dal adı main olarak değiştirilir ve yerel repo uzak repoya gönderilir.

Yerel Repoyu Uzak Repoya Gönderme (push) ve Alma (pull)

Yerel repodaki çalışmaları uzak repoya gönderme işlemi için push komutu kullanılır.

git push

Eğer remote repoda yerel repodakinden farklı bir sürüm oluşturulmuş ise push komutunu vermeye çalıştığınızda hata alırsınız. Bu yüzden local repodaki değişiklikleri remote repoya push edebilmek için öncelikle remote repodaki değişiklikleri local repoya almanız gerekir.

Bu durumda öncelikle fetch komutu ile remote repodaki değişiklikler alınmalı ve ardından merge komutu ile local repo ile birleştirilmelidir.

git fetch
git merge

veya iki farklı komut yerine pull komutu kullanılabilir.

git pull

Eğer bir uzak repo kullanarak bir takım ile çalışıyorsanız önce daha önce yapılmış değişiklikleri çekmeli ve daha sonra yerel repodaki sürümü uzak repoya göndermelisiniz. Yani bir proje üzerinde birden fazla kişi çalışıyorsanız; önce “pull” sonra “push”.

Çakışma Durumu

Bazen remote ve local repoda aynı dosya üzerinde değişiklik yapılmış olabilir. Bu durumda pull komutu yürütülürken CONFLECT (Content) diye başlayan bir satır görebilirsiniz. Birleştirme sırasında bir çakışma olduğunu bildiren bir mesajla devam eder ve hangi dosyada bu çakışmanın yaşandığını bildirir.

Örneğin index.html dosyasında title satırının çakıştığını düşünelim. index.html dosyasını açtığınızda aşağıdakine benzer bir yapı ile karşılaşırsınız.

Yukarıdaki kodlarda <<<<<<< HEAD ile ======= arasında kalan kısım local repodaki kodlar, ======= ile >>>>>>> arasında kalan kısım remote repodaki kodlardır.

Yine aynı örnekten devam edecek olursak, local repodaki değişikliği geçerli kabul edeceksek yukarıdaki kod bloğunu aşağıdaki şekilde değiştirip dosyayı kaydedelim.

Sonrasında dosyayı add komutu ile ekleyip, commit ile sürüm oluşturulup, push komutu ile remote repoya gönderebilirsiniz.

git add index.html
git commit -m "Local Title Geçerli Kabul Edildi"
git push

Uzaktan Yerelle Repo Aktarma (clone)

Remote repo üzerindeki bir git projesini yerel bilgisayarımıza aktarmak için clone komutu kullanılır.

git clone https://github.com/muhammetsafak/YeniUzakRepo.git

yukarıdaki komut https://github.com/muhammetsafak/YeniUzakRepo.git remote repo adresindeki repo için bulunduğum dizinde YeniUzakRepo adında bir dizin oluşturarak içine klonlar.

Eğer terminalin mevcut bulunduğu dizin içerisinde değil de farklı bir dizine klonlama işlemi yapmak isterseniz tam dizin yolunu belirtebilirsiniz.

git clone https://github.com/muhammetsafak/YeniUzakRepo.git /home/yenirepo

Yukarıdaki komut https://github.com/muhammetsafak/YeniUzakRepo.git uzak repo adresindeki repoyu /home/yenirepo/ dizinine klonlayacaktır.

Github.com üzerinde Branch ile Çalışma

Local repodaki bir branchi push etmek için;

git push origin localbranchname

localbranchname isimli dalı remote repoya push eder.

Şimdi proje yöneticisi olarak github üzerinden gönderilen bu dalı, projenin ana dalına nasıl dahil edeceğimize bakalım.

Github üzerinde proje sayfasında gördüğünüz gibi sarı zeminde cssfeature isimli dalın push edildiğine dair bir bildirim gösteriliyor. Compare & pull request butonuna basarak ilgili push işlemini kontrol edelim.

proje yöneticisi olarak yukarıdaki sayfa bize gönderilen dal ile ilgili ayrıntıları gösteriyor. Sayfanın altında kim tarafından hangi dosya da ne değişiklik yapıldığını da görebilirsiniz.

Yönetici olarak kendi yorumunuzu da dilerseniz bu bölümden girerek Create pull request butonuna basarak ana dala çekebilirsiniz.

Yukarıdaki sayfadan Merge pull request butonuna basarak yapılan değişiklikleri birleştirme işlemine başlayabilirsiniz. Bu alan aşağıdakine benzer şekilde değişecektir.

Burada da varsa yönetici olarak yorumunuzu yazabilirsiniz. Confirm merge butonuna bastığınızda birleştirme işlemi başlayacaktır.

Birleştirme işlemi tamamlandıktan sonra bu branch’in yayında kalmasına gerek yoksa branch’i remote repodan silebilmenizi sağlayacak bir buton göreceksiniz.

Delete branch butonuna tıklayarak branchi silebilirsiniz.

Github.com’da Ekip İle Çalışma

Elbette github.com üzerinde ki projenize her isteyen doğrudan düzenleme gönderemeyecektir. Bir kullanıcının projeye düzenleme gönderebilmesi için Collaborators (işbirlikçi) olarak eklenmiş olması gerekmektedir.

İşbirlikçi olmadan bir projeye katkı da bulunmakta mümkündür. Bu konuya birazdan değineceğim.

Github üzerindeki projenize işbirlikçi eklemek için github proje sayfasından Settings > Manage access sayfasından Add people butonuna basıyoruz.

Açılan küçük popup içerisinde ekip üyelerinin github kullanıcı isimleri ile arama yaparak ekleyebilirsiniz.

Github’da Bir Projeye Katkıda Bulunmak

Bir projeye katkı vermek isteyebilirsiniz. Bu işlem için katkı vereceğiniz github projesinin sayfasına gidin.

Fork butonuna basın! Bu buton projeyi sizin hesabınıza dallandırır. Aşağıdaki resimde görebileceğiniz gibi bu proje için kendi github hesabıma bir repo oluşturmuş oldum.

Projeyi local repoma klonladım ve index.html dosyasında bir değişiklik yaparak kendi hesabımda ki remote repoya push ettim.

Sonrasında projenin kendi hesabımdaki sayfasına geliyorum ve Contribute tıklıyorum açılan bölümden Open pull request butonuna basıyorum.

Şimdi yaptığım değişikliği gerçek projeye eklemeleri için bir pull isteği gönderebileceğim sayfa açıldı.

Bu sayfadan yaptığım değişikliği vs kontrol edip, Create pull request butonuna tıkladığımda yapılan değişikliği yazabileceğim bir yorum bölümü açılacaktır.

Burada da yorumumu yazıp Create pull request butonuna tıkladığımda pull isteğim gerçek projenin yöneticisinin onayına sunulacaktır.

Bu postta github.com ile örneklendirerek remote repo ile git kullanımına değindim. Böylece temel seviye git komut ve kullanımı konusu tamamlanmış oldu.

Muhammet ŞAFAK
https://www.muhammetsafak.com.tr

--

--