Merhaba arkadaşlar. Yazılıma başlarken Git ve Github’ı hep aynı şeyler sanıyoruz ama aslında bu durum yanlıştır. Git ve Github birbiriyle bağlantılıdır ama aynı şeyler değildir. Bu yazımda Git , Github, Git komutları gibi konular üzerine konuşarak Git ve Github kullanımını detaylı bir şekilde öğreniyor olacağız.
Git Nedir?
Git yazılım sistemlerinde kullanılan, hız odaklı ve dağıtık çalışan bir versiyon kontrol sistemidir. Git sayesinde yapacağınız projelerin adım adım versiyonlarının kopyalarını alarak daha sonra ihtiyaç duyduğumuz zaman aldığınız kopyalara yani versiyonlara kolayca dönebilme imkanı sunmaktadır. Mesela bir oyun oynadığımızı düşünelim. Bu oyunda zorlu görevleri atladıkça bir daha tekrarlamamak adına oyunu kaydederiz. Git sayesinde de aynı oyunda zorlu görevleri geçtiğimiz gibi kodlarımızı da Git sayesinde kaydediyoruz.
Git ücretsiz ve tamamen açık kaynak kodlu bir yapıdır. İlk sürümü Linux çekirdeği’nin geliştirilmesinde kullanılmak üzere 2005 yılında Linus Torvalds tarafından oluşturulmuştur.
Git versiyon kontrol sistemini bilgisayarınıza istedğiniz sürümü aşağıdaki linkten indirebilirsiniz. Ayrıca kurulumu klasik programları gibidir hızlıca kurulumunu yapma imkanı sunmaktadır.
Peki Neden Versiyon Kontrol Sistemini Kullanmalıyız?
- Uyumlu ekip çalışması sunmaktadır. Birden fazla kişinin çalıştığı projelerde; projede yapılan değişiklikleri görmeyi, projedeki çalışanlardan hangisinin proje üzerinde yapmış olduğu değişiklikleri göstermeyi sağlar. Bu sayede projenin hızlı bir şekilde gelişimini sağlar.
- Projede hatayla karşılaştığımız durumlarda eski kod kaydına dönmemizi sağlar. Bu sayede projeyi baştan yazmak yerine kısaca bir değişiklik sayesinde eski koda dönüp projenize devam edebilirsiniz.
- Dosyalardaki her değişimin neden olduğunu rahatlıkla anlamayı sağlıyor.
- Kodlarımızı yedekleme imkanı sunmaktadır.
Github Nedir?
Github, dünyanın en büyük geliştirici topluluklarından birisi olup, git versiyon kontrol sistemini kullanarak yazılım geliştirme projeleri için web tabanlı bir bulut depolama servisidir. Tüm projelerimizi ister herkese açık bir şekilde ya da kendinizin çalışabileceği gizli bir şekilde dosyalarınızı Github üzerinde yedekleyebilirsiniz.
GitHub ile dünya üzerinde projenizin herkes tarafından görülmesini, değerlendirilmesi sağlama imkanı sunuyor. GitHub üzerinde paylaşılan kodlar ile kendinizi geliştirebilirsiniz ve hatta eklemeler yapabilirsiniz. Öncelikli olarak GitHub kullanabilmek için bir hesap oluşturmanız gerekmektedir. Aşağıdaki bağlantıdan Github hesabınızı oluşturabilirsiniz.
Github aynı zamanda yazılımcıların bir CV’sidir. Github’a kayıt olunca aşağıdaki gibi bir ekran gelecektir. Eğer birilerini takip etmiyorsanız bu ekran boş gözükecektir.
Repository (Depo) Nasıl Oluşturulur?
Github’a hesabınızla giriş yaptıktan sonra aşağıdaki gibi bir ekran olacak. Sağ üst tarafta profil resminizin solunda bulunan “ + “ butonuna tıklayıp “New repository” dedikten sonra yeni deponuzu oluşturabilirsiniz. Yeni bir repository oluştururken aşağıdaki ekran karşınıza gelecektir. Bu sayfa sayesinde Proje adınızı, proje özetinizi, bu proje public mi private mi olacak buna karar verebilirsiniz. .gittignore ise bazı projelerde node_modules gibi kütüphanelerin bulunduğu dosyayı yüklemiyoruz.
Git Komutları
1. git config
Bu komutla verdiğiniz değerler ile birlikte kullanılacak yazar adını ve e-posta adresini sırasıyla ayarlar. Bunu ayarlamanın faydası bir IDE açtığınızda sizin Github hesabınızla senkronizasyonunu hızlandırır.
git config -–global user.name “[isim]” git config -–global user.email “[e-posta adresi]”
2. git init
Bu komut yeni bir depo başlatmak için kullanılır.
Bir klasör oluşturup içerisinde
git init
fonksiyonu çalıştırdığımızda .git ufak bir dosya sistemi içerir.
Bu klasörün içerisinde dosyalarınızın state(versiyonlarını) tutacaktır.
- Bu dosyalar arasındaki farklar,
- commit sırasındaki kesitler
hepsi bu dosyalar içerisinde tutulmaktadır. Bunu bir projemizde gözlemleyelim. Bir .git dosyası içindeki görünümü bu şekilde olabilir.
3. git add .
Bu komutla dosyalarımız da değişiklik yaptıktan sonra dosyalarımızı stage edebiliriz. Add olmadan önce dosyalarımız unstaged’dır. Kullanımı:
git add .
4. git status
Bu komut, işlenmesi gereken tüm dosyaları listeler. Aşağıdaki gibi çalışır. Aslında projemizde .git dosyası olup olmadığının kontrolünü sağlıyor.
git status
5. git commit
Bu komut, dosyayı sürüm geçmişinde kalıcı olarak kaydeder veya anlık görüntüler. Kullanımı:
git commit -m “[Commit mesajınız]”
Yukarıdaki repomda eğer bir değişiklik yapmış olsam kayıt edecekti. Ama bana zaten bu dosyaların en güncel hali değişim yapmadın diyor.
6. git remote
Bu komut, yerel depomuzu uzak sunucuya bağlamak için kullanılır. Kullanımı
git remote add [variable name] [Uzak Sunucu Linki]
7. git push
Bu komut, kodumuzda yaptığımız değişiklikleri Github’a aktarmayı sağlar. Kullanımı:
git push
8. git logs
Bu komut, dosyada yapılan tüm commit değişikliklerini göstermeyi sağlar. Kullanımı:
git log
9. git pull
Bu komut, uzak sunucudaki değişiklikleri bilgisayarımıza almamızı sağlar. Kullanımı
git pull
10. git fetch
Bu komut, uzak sunucudaki dosyalarımız ile bilgisayarımızdaki dosyaları karşılaştırarak günceller. Kullanımı
git fetch
git fetch komutu git pull komutuna göre daha güvenli bir şekilde çalışır.
11. git clone
Bu komut, mevcut bir URL’de bulunan repoyu local bilgisayarımıza taşımayı sağlamaktadır. Kullanımı
git clone [url]
Aynı zamanda kod kullanmadan yapma yöntemi de bulunuyor. Kodları Github Desktop yardımıyla, IDE yardımıyla ya da zip şeklinde indirerek kendi bilgisayarımıza alabiliyoruz.
Fork butonuna tıkladığınız zaman başkasının projesini kendinize almayı sağlar. Star ise sosyal medyadaki beğeni butonu gibi düşünebiliriz.
12. git stash
Bu komut, değiştirilen tüm izlenen dosyaları geçici olarak saklar. Kullanımı
git stash
13. git tag
Bu komut, belirtilen işleme etiket vermek için kullanılır. Kullanımı:
git tag [commitID]
14. git revert
Bu komut ile commit ettiğiniz herhangi bir değişikliği geri almak için kullanılır. Bu komut ile commit işleminizin kendisi veya bilgileri silinmez sadece commit işleminizdeki değişiklik geri alınır. Kullanımı:
git revert [commitID]
Branch Yapısı
Branch yapısını aslında bir repo oluşturduğumuz zaman her zaman kullanıyoruz. Tüm commitlerimiz eğer farklı bir branch açmadıysak master üzerinde toplanır. Master branchi projelerdeki tüm kodların toplandığı ana branch olarak bilinir.
Master haricinde bulunan bazı branchler ve bu branchlerin ne işe yaradığını anlatmaya çalışayım.
- Release branch : Gelecek versiyonda yayınlacak yeni güncellemeyi desteklemek amacıyla kullanılır.
- Feature branch : Uygulamamızın gelecek versiyonunda eklemeyi plandığımız özellikleri geliştiriğimiz branch modelidir.
- Hotflix branch : Canlı uygulama da bulunan kritik bir bug’ u çözmek amacıyla oluşturulur.
Merge Kavramı
Merge tüm dalları birleştirip master branchinde toplamayı sağlamaktır.
15. git branch
Bu komut, geçerli depodaki tüm yerel dalları listelemek için kullanılır. Kullanımı
git branch
Aşağıdaki komut ile yeni bir dal oluşturur. Master dalı haricinde farklı bir dal üzerinde çalışılır.
git branch [branch name]
Mesela bir ekip çalışmasında olduğumuzu düşünelim. Her birimiz birer branch üzerinde çalıştığımızı varsayarsak her branchte yaptığımız değişikliği pull request yaparak master branchine geçirilir. Bu sayede projenin tamamı master branchinde yer alır.
15. git switch
Bu komut, branchlerimiz arasındaki geçisi sağlamak amacıyla kullanılır. Kullanımı:
git switch [branch_name]
Git Merge Çakışmaları (Conflict)
İki kişi aynı dosyayı ve aynı satırı değiştirirse ve git otomatik olarak merge edemezse bu durumda conflict yani çakışma olacaktır. Bu durumda çakışma yaşayan kişi gerekirse ekipteki diğer kişi ile beraber oturup çakışmayı çözdükten sonra merge işlemine devam etmelidir.
16. git merge
Git’de merge işlemi başka bir branch’deki değişiklikleri üzerinde çalıştığınız kendi branch’inize entegre etme işlemidir.
Bu komut, belirtilen dalın geçmişini geçerli dalla birleştirir. Kullanımı:
git merge [branch name]
17. git checkout
git checkout komutu önceki commitlere dönme imkanı sağlar. Kullanımı:
git checkout [commitID]
18. git diff
Kendi local bilgisayarımızda yaptığımız değişiklikler neticesinde, projeyi yönlendirdiğimiz repo arasında oluşan farkları gösterir. Hangi satırı sildiğimiz, hangi satırı eklediğimiz vs. bilgilerini içerir.
git diff [dosya_adı]
19. git rebase
Bu komut ile Git öncelikle Branch-A ile Branch-B’nin ortak en son commit’ini bulup ortak commit sonrasında Branch-A’da yapılan diğer tüm commit’leri geri alır. Aslında bu commitler silinmez sadece geçici olarak farklı bir yerde saklanır. Asla kullanmamız gereken konu başka insanlarla çalışma yapıyorsak projeyi darmadağın edebilir.
README.md Dosyası
README dosyası bilgisayar yazılımının bir dizinindeki veya arşivindeki diğer dosyalar hakkında bilgi içeren, düz metin dosyası şeklinde bir belgedir. Bu sayede projeler hakkında bilgi sahibi olarak diğer kişilerin rahatlıkla projemizi anlamalarını kolaylaştırır.
README.md Dosyasını Biçimlendirme
Başlık Ekleme
Başlık eklemek için # işareti kullanılır. Bu işaret html de ki başlık etiketlerine (h tagları) denk gelmektedir. Aynı zamanda isterseniz HTML taglarını kullanarak başlık eklemekte mümkündür.
# Başlık 1## Başlık 2### Başlık 3#### Başlık 4##### Başlık 5###### Başlık 6
Yazı Stili Verme
Kod Bloğu Eklemek
```javascript if (isAwesome){ return true } ```
Listeleme
Sırasız liste yapmak için — kullanılır. Sıralı liste içinse 1 2 3 şeklinde yazarız. Sırasız liste örneği
- 100 Gün boyunca çalışmalarımı buradan takip edebilir, hızlı bir şekilde tekrar yapabilir veya paylaştığım kaynaklardan yararlanabilirsiniz.- Her gün yapılanlar gün ayrılmıştır. Her günün konu kapsamı aşağıdaki gibi sıralanabilir.- Bu 100 günlük süreçte Emre Altunbilek, Kasım Adalan, Veli Bacık, Gazihan Alankuş ve Angela Yu'nun içeriklerinden faydalanarak hazırlanılmıştır. Eğer faydasını görürseniz repoyu yıldızlamayı unutmayın.
Resim Ekleme
<img src="https://miro.medium.com/max/1179/1*96UcmD4sxlB8on8LcsEteA.png">
Daha fazla bilgi sahibi olmak isterseniz aşağıdaki linkten Github markdown dokümantayonunu okuyabilirsiniz.
Sizde birisi profilinize girince aşağıdaki gibi bir görünümle karşılaşmasını ister miydiniz?
Bunu yapmanın yolu çok basit aslında kullanıcı adınızla bir repo oluşturuyorsunuz ve bu sayede ana sayfanızda bu şekilde olmasını sağlamış oluyorsunuz. Mesela benim kullanıcı adım berkcangumusisik bu yüzden berkcangumusisik isimli bir repo oluşturdum ve kodlarımı yazarak bu hale getirdim. Kodların örneğini aşağıya bırakıyorum.
Git ve Github’ın IDE’ler ile kullanımı daha kolay olduğu için her seferinde Git Bash kullanmadan daha hızlı işlerinizi gerçekleştirebilirsiniz. Ama normal hayatta yukarıdaki öğrendikleriniz IDE bağımsız bir şekilde kullanmamızı sağlıyor. VSCode ile kullanımı için aşağıdaki eğitimi takip etmenizi öneririm.
Github’ın Kariyere Etkisi
Tüm yapılan projeleri Github üzerinden paylaşarak bir portföy oluşturabilmek çok iyi olacaktır. Diğer insanlar bizim repomuzdan faydalanabilirler aynı zamanda bizlere iş imkanı sunmaktadır. Ben şu dilleri diyebiliyorum demeyi sağlayacaktır. Yazılım dünyasında ön plana çıkaracaktır.
En iyi kodumu paylaşmalıyım diye düşünmemek gerekiyor. Burada önemli olan yazılımdaki gelişimi göstermektir.
Ayrıca öğrenciler için Github Students Pack desteğiyle Canva, JetBrains gibi birçok ürünü ücretsiz kullanma imkanı sunmaktadır. Bu avantajı öğrencilerine sunduğu için kaçırmamanızı öneririm. Aşağıdaki linkten inceleyebilirsiniz.
Hiç yorum yok:
Yorum Gönder
Görüş ve Düşüncelerinizi Bizimle Paylaşmayı Unutmayın.