Git ve GitHub nedir? Yeni başlayanlar için temel rehber
Sürüm kontrolünün ne işe yaradığı, Git ile GitHub arasındaki fark ve her gün kullanılan temel komutlar.
Yazılıma yeni başlayanların en sık duyduğu kelimelerden biri Git, bir diğeri de GitHub. İkisi sık sık birbirine karıştırılıyor ama aslında farklı şeyler. Bu yazıda ikisinin ne olduğunu, neden bu kadar yaygın kullanıldığını ve günlük hayatta en çok kullanılan komutları sade bir dille anlatmaya çalışacağım.
Önce şu soruyla başlayalım: Bir proje üzerinde çalışırken 'proje_son.zip', 'proje_son_son.zip', 'proje_gercekten_son.zip' gibi kopyalar oluşturduğunuz oldu mu? Git tam olarak bu karmaşayı ortadan kaldırmak için var. Git, projenizdeki değişiklikleri zaman içinde kaydeden bir sürüm kontrol sistemi.
Git sayesinde projenizin geçmişteki herhangi bir haline dönebilir, yaptığınız değişikliklerin ne zaman ve neden yapıldığını görebilir ve bir şeyleri bozduğunuzda geri alabilirsiniz. Bu özellikle yeni bir özellik denerken büyük bir rahatlık sağlıyor, çünkü deneme başarısız olursa projenin çalışan haline dönmek çok kolay.
GitHub ise Git ile tutulan projelerin internette saklandığı bir platform. Yani Git bir araç, GitHub bir hizmet. Projenizi GitHub'a yüklediğinizde hem yedeğiniz oluyor hem de başka bilgisayarlardan erişebiliyorsunuz. Ayrıca başkalarıyla ortak çalışmak ve açık kaynak projelere katkı vermek için de GitHub kullanılıyor. GitHub'a benzer GitLab ve Bitbucket gibi alternatifler de var.
Git'in en temel kavramı 'repository' yani depo. Projenizin klasörü Git tarafından takip edilmeye başladığında o klasör bir depoya dönüşüyor. Bir değişiklik yaptığınızda bunu 'commit' ile kaydediyorsunuz. Commit, projenin o andaki halinin bir fotoğrafı gibi düşünülebilir ve yanında kısa bir açıklama mesajı taşır.
Günlük kullanımda en çok işinize yarayacak komutlar şunlar: 'git init' ile bir klasörü Git deposu haline getirirsiniz. 'git status' ile hangi dosyaların değiştiğini görürsünüz. 'git add .' ile değişiklikleri kayda hazırlarsınız. 'git commit -m "mesaj"' ile bu değişiklikleri açıklamasıyla birlikte kaydedersiniz.
Bir projeyi GitHub'a göndermek için önce GitHub'da boş bir depo oluşturur, ardından bilgisayarınızdaki projeyi ona bağlarsınız. Sonrasında 'git push' komutuyla commit'lerinizi GitHub'a yüklersiniz. Başka bir bilgisayarda ya da başka biri tarafından yapılan değişiklikleri almak için ise 'git pull' kullanılır. Mevcut bir projeyi bilgisayarınıza indirmek için 'git clone' komutu var.
Branch yani dal kavramı da Git'in en güçlü özelliklerinden biri. Ana dalı bozmadan yeni bir özellik üzerinde çalışmak istediğinizde ayrı bir dal oluşturursunuz. İş bittiğinde bu dalı ana dala birleştirirsiniz (merge). Böylece ana projeniz her zaman çalışır durumda kalır, denemelerinizi ise ayrı bir yerde güvenle yaparsınız.
İyi bir commit mesajı yazmak da küçük ama önemli bir alışkanlık. 'düzeltme' veya 'son' gibi mesajlar birkaç hafta sonra hiçbir şey ifade etmiyor. Bunun yerine 'Blog sayfasına okuma süresi eklendi' gibi ne yapıldığını anlatan kısa cümleler yazmak, geçmişe baktığınızda size büyük kolaylık sağlıyor.
Bir diğer önemli konu .gitignore dosyası. Bazı dosyaların Git'e eklenmemesi gerekiyor: node_modules gibi çok büyük ve yeniden indirilebilen klasörler ya da şifre, API anahtarı gibi gizli bilgiler içeren .env dosyaları. Bu dosya adlarını .gitignore içine yazarak Git'in onları görmezden gelmesini sağlarsınız. Gizli bilgileri yanlışlıkla GitHub'a yüklemek, yeni başlayanların en sık yaptığı güvenlik hatalarından biri.
GitHub'ın bir başka faydası da hazır yayına alma sistemleriyle çalışması. Örneğin Vercel gibi platformlar, GitHub'daki projenize bağlandığında her push işleminden sonra siteyi otomatik olarak yeniden yayınlıyor. Yani koda bir değişiklik yapıp GitHub'a gönderdiğinizde, birkaç dakika içinde canlı site güncellenmiş oluyor.
GitHub profiliniz aynı zamanda bir vitrin görevi görüyor. Yaptığınız projeler, commit geçmişiniz ve açıklamalı README dosyalarınız, ileride iş başvurusu yaparken ya da bir müşteriyle konuşurken sizin için güçlü bir referans olabiliyor. Bu yüzden küçük de olsa projelerinizi düzenli bir şekilde GitHub'a yüklemenizi öneririm.
Başta komut satırı biraz yabancı gelebilir. Dilerseniz Visual Studio Code gibi editörlerin içindeki Git arayüzünü ya da GitHub Desktop gibi görsel araçları da kullanabilirsiniz. Ama temel komutları bir kez öğrendikten sonra hem hızlanıyor hem de arka planda ne olduğunu çok daha iyi anlıyorsunuz.
- Git bir araçtır, GitHub ise Git projelerinin internette saklandığı bir platformdur.
- Günlük döngü: git add . → git commit -m 'mesaj' → git push
- node_modules ve .env gibi dosyaları .gitignore ile Git'in dışında tut.
- Vercel gibi servisler GitHub'a bağlandığında her push sonrası siteyi otomatik günceller.
Bir sorun mu var, konuşmak mı istiyorsun?
Benimle iletişime geç ↗