Git, GitHub, GitLab Nedir? Git Komutları

Tuğçe Akın
5 min readApr 25, 2020

--

Git Nedir?

Selamlar,

Git nedir, sorusunu cevaplayalım önce. Git bir versiyon kontrol sistemidir(VCS). (Linux Kernelinin de yaratıcısı olan) Linus Torvalds tarafından tasarlanmış ve oluşturulmuştur. Ücretsiz bir yazılımdır. Git ile uzak bir depoda(repository) projenizi tutabilir ve her değişiklik yaptığınızda uzak depoya veri gönderebilirsiniz. Bu sayede localde yaptığınız değişikliklerin başına bir iş geldiğinde uzaktaki deponuzda veriler güvende olmuş oluyor. Giti önemli kılan bir diğer özelliği ise, proje üzerinde birden fazla kişinin çalışmasına olanak sağlamasıdır. Bu özelliği sayesinde aynı proje üzerinde birçok kişi geliştirme yapabilmektedir.

GitHub, GitLab

GitHub ve Gitlab, Git ile entegre olmuş depo alanlarıdır. Github ve Gitlab‘ ta uzak bir depo oluştururken iki seçenek var. Public ve private. Projenizi public yaparsanız herkese açık bir hale gelir. Private seçeneği ise gizli depo oluşturur. Bu özellik Github’ta 3 katılımcıya kadar ücretsiz, Gitlab’ta ise tamamen ücretsizdir. İkisi arasında çok belirgin farklar olmamasıyla birlikte, GitLab’ı daha çok firmalar tercih etmektedir. Çünkü ücretsiz sürümünde kendi sunucularınızı kurarak sadece kurum içi çalışanların erişebileceği GitLab servisi yaratabiliyorsunuz.

Git Yapılandırılması

Kurulum işlemini başarılı bir şekilde gerçekleştirdikten sonra git yapılandırması yapmamız gerekiyor. Kullanıcı adı ve mail ile hesabımızı tanıtmamız gerekir. Bunun için de aşağıdaki komutlar yeterli olucaktır.

|git config — global user.name “Tuğçe Akın”

| git config -global user.email tugce.akin@testinium.com

Yapılandırma ayarlarınıza bakmak için git config — list komutunu çalıştırabilirsiniz.

Bazı yardımcı komutlardan bahsedeceğim şimdi;

pwd: Terminal üzerinde hangi dizinde olduğumuzu gösteren komuttur.

ls: Bulunduğumuz dizin üzerindeki dosyaları listeler.

cd: İstediğimiz dizine gitmemizi sağlayan komuttur. Bir önceki dizine gitmek için ise cd.. komutunu kullanırız.

Şimdi projemizin içine girdik ve git projesi olduğunu belirtmemiz için git init komutunu kullanacağız. Projenizin klasöründe .git adında gizli bir klasör oluşur. Bundan sonra git status komutunu çalıştırıyoruz. Bu komut projenizde en son yapılan değişiklikleri gösterir. Ben daha önce ufak değişiklikler yaptığım için kırmızı alanlar yaptığım değişiklikleri göstermekte.

Bundan sonra ise git add. komutunu kullanacağız. git add’ten sonra eklemek istediğimiz dosyayı yazarız. git add. ise bütün değişikleri ekle demektir. Bu komut aslında projeyi comitlemeye hazırlar.

Şimdi ilk commit için git commit -m “ilk commit” yazıyoruz. Yaptığımız ilk değişikliği gönderdik.

Projeyi Uzak Bir Depoya Yerleştirme(Repository)

GitHub hesabımızı açtık ve New Repository dedikten sonra bu ekran çıkıyor. Name, Description ismi verilir. Public seçeneği default seçilidir. Create repository’e tıklanır.

git remote add origin https://github.com/tugceakinn/APITest.git diyerek uzaktaki depomuza remote bağlanıyoruz. Ancak projenizi deponuzda hemen göremezsiniz. Projenizi depoya göndermek için de git push -u origin master diyoruz.

Ben bu komutları projemi açtığım İntelliJ IDE’sinin terminalinde yazarak yaptım. Projemizi GitHub’taki depomuza göndermiş olduk.

.gitignore Kullanımı

Oluşturduğumuz GitHub depomuza projemizdeki göndermek istemediğimiz dosya ve klasörleri, .gitignore uzantılı bir dosya oluşturup içine ekleyebiliyoruz.

Proje ilerledikten sonra .gitignore içine eklenen dosyaları git içerisinden silmenin iki yöntemi var. Birincisi .gitignore içindekileri toplu olarak silme yöntemi. Bunun için terminale git rm — cached `git ls-files -i — exclude-from=.gitignore` yazmalısınız. Ardından git commit -m ‘.gitignore icindeki butun dosyalar silindi’ komutunu giriyoruz. Ve pushluyoruz. GitHub hesabımıza gidip .gitignore içideki dosyaların Github’dan da silindiğini görebiliriz.

Diğer yöntem ise silmek istediğiniz dosyayı belirterek yapmak. Bunun için de git rm -r — cached dosya-veya-klasorun-adi komutunu kullanırız. Geriye kalan adımlar yukarıdaki gibi devam etmektedir.

Yapılan Değişiklikleri Geri Alma

Yapılan değişiklikleri geri almanın birden fazla yöntemi olabilir. Ne yapmak istediğimize bağlı olarak bu yöntemler değişmektedir.

git reset –hard komutu ile son yapılan değişikliğe geri alabiliriz. Merge sonrası conflict(çakışma) olursa ve bu çakışmayı geri almak istiyorsanız bu komutu kullanabilirsiniz.

git checkout — <dosya_adi> komutunu belirtilen dosyayı geri almak için kullanırız.

git reset –hard ORIG_HEAD veya git reset –hard origin/master komutları ile projeyi en son yapılan merge durumuna getiririz.

git reset –soft HEAD^ komutu ile yapılan son değişikler saklanır ve son gönderiye geri dönülür.

Branch, Farklı Branchlarda Çalışmak ve Conflict

Aynı proje üzerinde birden fazla kişi çalıştığında riskler ortaya çıkabiliyor. Projeyi sağlıklı bir şekilde yürütebilmek için branch oluşturmamız gerekebilir.

Mastera pushlamadan önce kendi oluşturduğumuz brancha pushlama yaparsak, mergeleme(birleştirme) işleminde çakışmaları görebilir ve çözebiliriz. Proje oluşturduğumuzda git bize master branchını oluşturur. Branch listelemek için git branch komutu kullanılır. Bir branch oluşturmak için git checkout -b branchIsmi komutunu kullanırız. Geçmek istediğimiz branch için ise git checkout branchIsmi komutunu kullanırız.

Branch silmek için git branch -d branchIsmi komutu kullanılır. Böylelikle yanlışlıkla açtığımız branchları silebiliriz.

Aynı dosyalar üzerinde birden fazla kişi değişiklik yaptığında conflict ortaya çıkabiliyor. Bunu önlemenin bir kaç yöntemi var. Önce bir conflict senaryosu oluşturalım.

echo “this is some content to mess with” > merge.txt → merge.txt dosyasını içindeki yazıyla beraber ekler.

git commit -a -m ”commit1” → mastera ilk commit atıldı.

git checkout -b new_branch → yeni branch oluşturuldu.

echo “totally different content to merge later” > merge.txt → merge.txt dosyasını içindeki yazıyla beraber ekler.

git commit -am”commit2”

git checkout master

echo “content to append” >> merge.txt

git commit -am”appended content to merge.txt”

git merge new_branch

Bu senaryo sonucunda conflict oluşmaktadır. IntelliJ Ide sinin sağ altında yazan Git:merging master‘a tıklanır. Oluşturduğumuz yeni branchımızın üstüne geldikten sonra merge into current seçeneği seçilir. Daha sonra merge dedikten sonra karşımıza conflict ekranı çıkmaktadır.

Okları kullanarak hangi değişikliği almak istiyorsak ortadaki alana ekleyerek devam edilir. En solda görülen alan master, en sağdaki alan ise oluşturduğumuz yeni branchımız. En sonki hali ise ortadaki Result alanıdır. Bu bilgiler ışığında conflict çözebiliriz.

Sonuç: Git komutları uçsuz bucaksız. Bir işlemin birden fazla yöntemi var. Hangi yöntemi kullanmak size kalmış. Yazımı okuduğunuz için teşekkürler.

Görüşmek Üzere:)

--

--

Tuğçe Akın
Tuğçe Akın

Written by Tuğçe Akın

Developer in Test @Trendyol Group

No responses yet