GitHub ve Git
Bu ders ile temel git komutlarını öğrenerek açık kaynak dünyasına giriş yapmış olacaksınız ve bu bence çok havalı bir şey!
Merhaba! Bu makale temel git komutlarını içermektedir. Eğer Git’te yeni değilseniz bu makaleyi okumanıza gerek yok. Şayet yeniyseniz, lütfen benimle kalın 😁
Nedir bu Git?
git-scm.com adresine göre;
Git, küçükten büyüğe tüm projelerinizi hızlı ve etkili bir şekilde yönetmek için tasarlanmış, açık kaynak kodlu bir versiyon kontrol sistemidir.
Nasıl Kurulur?
Git kullanmaya başlamadan önce bunu bilgisayarınıza indirmeniz gerekiyor. Bu yüzden git-scm.com adresine giderek işletim sisteminize uygun olan git yükleyicisini indirebilirsiniz. Linux dağıtımları kullanıyorsanız eğer muhtemelen bilgisayarınızda halihazırda yüklü olabilir. Terminale “which git” yazarak bunu öğrenebilirsiniz. Bu komut size git’in kurulu olduğu dizini gösterir.
Eğer nasıl kurulacağını bilmiyorsanız linkini bıraktığım videoyu inceleyebilirsiniz: How to Install Git?
Hadi Başlayalım!
Eğer video’daki işlemleri başarıyla tamamladıysanız, tüm git komutları düzgün çalışacaktır. Bunu öğrenmek için sadece komut satırını açın ve ekrana ‘git’ yazın. Bu işlemi yaptığınız zaman git size tüm muhtemel komutları gösterecektir.
Git dersimizin derinlerine dalmadan önce bazı temel anahtar terimleri anlamamız gerekiyor. İlk olarak onlarla başlayalım:
- Repository: Repository’i projenizdeki kodları saklayabileceğiniz bir kütüphane olarak düşünebilirsiniz.
- Branch: Bazen yazılımcılar olarak yeni dallar (branch) üzerinde çalışmamız gerekebiliyor. Şöyle düşünün; bir yazılım üzerinde takımınızla çalışıyorsunuz. Bir arkadaşınız, projenizin arayüzü üzerinde çalışıyorken diğeri de aynı projede Database sistemleri üzerinde çalışıyor. Dallar, ana dal (master branch / main branch) üzerinde değişiklik yapılmadan aynı proje üzerinde çalışmaya olanak tanır. Dolayısıyla bir arkadaşınız arayüz üzerinde çalışırken diğeri de database sistemleri üzerinde farklı bir branchler üzerinden aynı projede çalışabilir. Tabii ki yapılan güncelleştirmeler ve testlerden sonra bu iki takım arkadaşınızın çalıştığı branchler ana branch ile birleştirilebilir. Bunun avantajı ana proje dosyalarında değişiklik yapmadan projeniz üzerinde çalışabilmenizdir. Böylelikle istenmeyen veya hatası bol olan projelerin önünü kesmiş olursunuz.
- Commit: Commit, projeniz üzerinde bir şey değiştirdikten sonra bu değişiklikleri kaydeder ve değişen içerik hakkında log mesajını gösterir.
- Master Branch: Master (ayrıca Main adıyla da tanınır) Branch, repository’nizin ana dalıdır.
Yukarıda ki ilisturasyonu dikkatlice inceleyin. Yazılım geliştirme işleminiz devam ederken takım arkadaşınızdan bir tanesi yeni bir branch oluşturuyor. Aslında arkadaşınızın elinde projenizin master branch’inin bir kopyası oluyor. Bu sayede ana projeniz (master branch üzerinde bulunan) etkilenmeden arkadaşınız arayüz üzerinde geliştirmelerini yapabiliyor. Tüm testlerden sonra eğer sorun çıkmazsa ana branch ile birleştirebiliyor.
- Fork: Fork en temel anlamıyla başkasının repository’sini, sizin uzak repository’inize kopyalaması işlemine verilen addır.
- Pull Request: Fork ettiğiniz kütüphane üzerinde değişiklikler yaptıktan sonra bu değişiklikleri gerçek proje sahibinin repository’sine gönderip katkı sağlamak için proje sahibine istek göndermeye denir.
- Merge: Branchleri, Master branch ile birleştirmeye verilen addır.
Daha da Derine İnelim
Eğer temel terminolojiyi anladıysak git komutlarına başlayabiliriz.
1. git config
Bu komut git üzerinde kişisel e-mail ve kullanıcı adınızı ayarlamanıza yarar. Değişikliklerinizi commit ettiğiniz zaman commit’lerde bu bilgileri görebilirsiniz.
Mail Adresini Ayarlamak
git config --global user.email email@example.com
Kullanıcı Adını Ayarlamak
git config --global user.name "FIRST_NAME LAST_NAME"
Commit ettiğimiz değişiklikleri görüntülemeye çalıştığımız zaman Author kısmında git config ile girdiğimiz değerleri görebilirsiniz.
2. git init
Buraya kadar hiçbir şey de sorun yaşamadıysanız şimdi sıra proje dosyanızı yerel bir repository’e dönüştürmeye geldi. Komut satırı yardımıyla projenizin dizinine gidin. Daha sonra yine ‘git init’ komutunu çalıştırın veee ta taa… Lokal bir repository oluşturdunuz! Artık tüm git komutlarını proje dosyanızın içerisinde çalıştırabilirsin.
git init komutu proje dosyanızın içerisinde göremediğiniz dosyalar oluşturur. Bu sayede git bulunduğunuz dizinde bir repository olduğunu anlar ve git komutlarını çalıştırabilmenize olanak tanır.
3. git add
git add komutu değişiklik yaptığınız dosyaların repository’ye eklenmesini sağlar. Proje dizininizde ‘örnekDosya’ isimli bir dosya oluşturduğunuzu varsayalım ve bunu repository’e eklenmesini istiyorsunuz bu yüzden ‘git add örnekDosya’ komutunu çalıştırmamız gerekiyor. Eğer tüm dosyaları eklemek istiyorsanız ‘git add . ‘ komutunu kullanmanız gerekir. Daha sonra git commit kullanarak değişikliklerimizi nasıl kaydedeceğimizi öğreneceğiz.
4. git status
git status komutunu kullanarak commit edilmesi gereken dosyaları göreceksiniz. Bu dosyalar bir önceki adımda eklediğiniz dosyalardı.
5. git commit
Artık git add ile eklediğimiz tüm değişiklikleri kayıt edebiliriz. Aşağıdaki komut, dosyanızda yapılan değişiklikleri kaydetmenize yarar. Yapılan değişiklikleri insanlara açıklamak için commit’lerinize bir de açıklama girmelisiniz.
git commit -m "Açıklamanız Buraya"
6. git log
Proje geliştirirken çokça commit yapacaksınız. Bu yüzden geçmiş commitlerinizi görüntülemeye ihtiyaç duyabilirsiniz.
Yukarıda daha önce yaptığımız commit’i görüyorsunuz.
Peki ya Branch’ler?
Şu ana kadar hep master branch üzerinde çalıştık fakat gerçek projelerde farklı branchler üzerinde de çalışmanız gerekebilir. Bu sebeple branch komutlarını inceleyeceğiz.
1. Tüm Branch’leri Görmek
git branch komutunu kullanarak tüm branchleri görebilirsiniz.
Yeni branch oluşturmadığımız için sadece master branch’imiz gözüküyor.
2. Yeni Bir Branch Oluşturmak
Eğer yeni bir branch oluşturmak istiyorsanız ‘git checkout branch_adi’ komutunu kullanabilirsiniz. Bu komut ayrıca sizi oluşturduğunuz yeni branch’e geçirir.
3. Branch’ler Arasında Geçiş Yapmak
‘git checkout varOlanBranchİsmi’ komutunu kullanarak branch’leriniz arasında geçiş yapabilirsiniz.
4. Branch’lerinizi Silmek
Branchleriniz üzerinde çalıştıktan sonra bunları silmek isteyebilirsiniz. ‘git branch -d branchİsmi’ komutunu kullanarak branchlerinizi başarıyla silebilirsiniz.
5. Hangi Branch Üzerinde Çalıştığınızı Öğrenmek
Eğer branch isminin başında * işareti varsa o branch üzerinde çalışıyorsunuz demektir.
Uzak Repository’ler ile Çalışmak
Yakında uzak repo’lar (repo, repository’nin kısaltması olarak kullanılır) ile çalışacağız fakat bu aşamaya geçmeden önce size repo’larınızı uzakta yani internet üzerinde saklayabileceğiniz bir aracı tanıtmak istiyorum. Ve karşınızdaaaaa GitHub! Muhtemelen bu ismi daha önce duymuşsunuzdur. GitHub sayesinde bireysel olarak veya takımınızla ortak projeler geliştirebilirsiniz. Ayrıca açık kaynak kodlu projeler için bulunmaz bir nimettir. Bu kısımda yerel repo’larımızı nasıl uzaktaki repo’ya göndereceğimizi öğreneceğiz.
1. Uzak Repository’nin Adresini Yerel Repository’e Eklemek
GitHub’a kayıt olduktan sonra GitHub üzerinden yeni bir uzak repo açmanız gerekiyor.
‘New’ butonuna basın, public bir repo oluşturun. Daha sonra bilgisayarınızdaki proje dosyalarına gelin. Eğer yerel repoları, uzak repoya yüklemek istiyorsak o zaman yerel repo’nun uzaktaki reponun adresini bilmesi gerekiyor. Bu yüzden aşağıdaki komutu kullanarak uzak repo’nun adresini yereldekine tanıtalım.
git remote add origin https://github.com/UzaktakiRepoAdresiniz
Burada origin uzak repository’nizin yerelde tutacağı addır. Origin kelimesi Original kelimesinin kısaltmasıdır. Burada origin’i kullanmak size kalmış bir şey. İsterseniz origin yerine uzak repo’ya farklı bir isim de verebilirsiniz. Fakat bir çok geliştirici origin olarak kullanmaya devam etmektedir.
Ayrıca Github, yeni bir repository yarattığınız zaman size yardımcı olabilecek bazı komutlar göstermektedir.
2. Yerel Repository’i Uzak Repository’e Yüklemek
Yerel repo’da commit işlemi yaptıktan sonra değişikliklerinizi uzak repo’ya aktarabilirsiniz. Bunun için aşağıdaki komutu kullanacağız.
git push -u origin UzaktakiReponuzunBranchİsmi
Yukarıda uzaktaki repo’muzun adını origin olarak belirttiğimiz için push (itme) işlemi yaparken bu ismi kulandık. Ayrıca yerel repo’nuzda branchler olduğu gibi uzak repo’nuzda da branchler var bu yüzden yapılan değişikliklerin uzakta ki repo’da hangi branch’e itileceğini de belirtmemiz gerekir. Genellikle master ya da main kullanılır. Bu işlemden sonra konsol size GitHub adınız ve Şifrenizi soracaktır.
Artık yerel repository’nizi GitHub’da görebilirsiniz.
3. Fetch (Getirmek)
GitHub’da arkadaşlarınız aynı proje üzerine eklemeler yapabilir bu nedenle elinizde bulunan yazılım sürünü güncel olmaz. Bu yüzden arkadaşlarınızın commit’lerini incelemeniz daha sonrada bunu kendi yerel repository’nizle birleştirmeniz gerekebilir. Arkadaşlarınızın commit’lerini görüntüleyip incelemeye yarayan komutumuz fetch nasıl kullanılır ona bakalım.
git fetch origin
4. Yerel Repository’i Güncellemek
3. adımdan sonra yerel repo’nuzu GitHub’dakiyle güncellemeye karar verdiyseniz bunun için aşağıda ki komutu kullanmalısınız.
git pull origin
Bu sayede uzaktaki repo ile yerel repo’nuzu güncellemiş olursunuz.
Diğer Kullanışlı Komutlar
git diff
Yerel repository’nizde ki yaptığınız değişiklikleri teker teker görmenize yardımcı olur.
git rm [dosya_adi]
Yerel repo’nuzdan belirttiğiniz dosyayı silebilirsiniz.
git clone [uzakRepoAdresi]
Diğer insanların repo’larını kendi bilgisayarınıza klonlayabilirsiniz.
Bence yeni başlayanlar için yukarıda ki komutları bilmek yeterli olacaktır. Daha fazlasını öğrenmek isterseniz aşağıdaki siteye göz atabilirsiniz.
Okuduğunuz için teşekkürler 🙌🏻