Merhaba arkadaşlar,
Bu yazıda sizlere git nedir? en çok kullanılan git komutları nelerdir gibi git kavramlarından bahsetmeye çalışacağım.
Git Nedir?
Git, mevcut diğer sistemlere göre birçok avantajı olduğu için çoğu geliştiricinin tercih ettiği sürüm kontrol sistemidir. Dosya değişikliklerini daha verimli bir şekilde depolar ve dosya bütünlüğünü daha iyi sağlar. Git, Linus Torvalds tarafından 2005 yılında geliştirilen bir sürüm kontrol sistemidir (Linux’u yazan kişi). Git, geliştiricilerin kodlarının durumunu takip etmelerine yardımcı olur ve bir kod tabanı üzerinde işbirlikleri yapmaya olanak tanır.
Birçok bilgisayarda Git zaten kurulu olarak gelir. Bir terminal açın ve terminale git yazın. Eğer git komutları listesini görürseniz bilgisayarınızda git kurulu demektir. command not found: git hatası alıyorsanız, buradaki adımları takip ederek bilgisayarınıza git kurulumu yapabilirsiniz.
Git Kullanımı
Daha önce bir bilgisayar oyunu oynadıysanız veya bir bilgisayar programı kullandıysanız ve daha önce kaydedilmiş bir sürüme geri dönebileceğinizi fark ettiyseniz, doğal olarak Git’in gerekliliğini anlarsınız. Ancak git programınızdaki her bir kod satırını takip etme ihtiyacı duymak yerine, şu anda sahip olduğunuz kod ile en son kaydettiğiniz kod arasındaki değişiklikleri kaydeder. Her kod satırının en son ne zaman kaydedildiğini not eder ve bunları özel bir gizli klasörde saklar. Yani projeyi yeni bir versiyona yükseltmek veya bazı dosyalarda değişiklik yapmak istediğimizde git sadece önceki versiyon ile farklı olan kodları kaydeder.
git init proje ana dizininde bu kod satırı çalıştırılır. Bu işlem Git’in dosyalarını saklayacağı bir klasör oluşturacaktır.
git add komutu ile proje dosyalarımızın git de saklanacağını belirtiyoruz. git add –all komutu ile değişiklik gösteren tüm dosyaların eklenmesini sağlayabiliriz.
git commit -m “commit mesaj” komutu ile projedeki değişiklikleri lokalimizdeki git’ e kaydedebiliriz.
git push komutu ile projedeki değişiklikleri uzak sunucuya yükleme işlemi gerçekleştirilir. Burada dikkat edilmesi gereken değişikliklerin hangi branch’ i etkileyeceğidir. Branch konusuna gelecek olursak proje ilk oluşturulduğunda master branch adında bir branch de oluşturulur. Ardından yeni branch oluşturmak istenir ise git checkout -b “branch adı” yazılarak (örneğin git checkout -b development) yeni branch oluşturma işlemi gerçekleştirilir. Farklı bir branch’e geçiş yapmak isterseniz git checkout “branch adı” örneğin git checkout master yazarak geçiş sağlayabilirsiniz.
git pull komutu proje lokalde henüz güncel değil ise sizin veya başkalarının yaptığı değişiklikleri lokaliniz ile senkron hale getirmek için kullanılır.
Örnek kullanım: git pull origin master
GitHub’da Proje Oluşturma ve Temel git Komutlarını Kullanma
Github hesabımıza giriş yapıp new butonuna tıklıyoruz. Burada bizi yeni bir repo oluşturma sayfası karşılayacak.
Buradan repo adını ve public/private seçimimizi yaptıktan sonra create repostory butonuna tıklıyoruz ve github projemiz oluşturulmuş oluyor. Şimdi lokalde bir proje oluşturup bu proje ile github hesabımızdaki repoyu ilişkilendirelim.
Masaüstüne “git-commands” adında bir klasör oluşturdum ve bu klasör dizinine geldikten sonra git init komutuyla git dosyalarını bu dizinde oluşturdum.
Artık github’ hesabımda oluşturduğum repo ile lokalde oluşturduğum repoyu ilişkilendirebilirim. Github reposuna gittiğimizde bizi repoda henüz bir şey olmadığından böyle bir ekran karşılayacak.
Bu adımda burada da yazan, git remote add origin git@github.com:sametkaravaizoglu/git-commands-tutorial.git komutuyla repoyu lokaldeki klasörümüzle eşleştiriyoruz.
Hadi klasöre birkaç ekleme yapalım ve bunu repoya yükleyelim. Örnek olması açısından ben bir tane deneme.txt adında txt dosyası oluşturuyorum ve içerisine “bu bir denemedir” yazıyorum. Ardından terminale git status yazarak reponun durumunu kontrol edeceğim.
deneme.txt Untracked files: adı altında listeleniyor. Peki nedir bu Untracked files?
projede yaptığımız değişikliklerin her zaman tamamını repoya yüklemek istemeyebiliriz. Bu durumda bu dosyalar untracked files olarak görünür. Fakat ben bu klasördeki tüm dosyaları repoya yüklemek istiyorum o halde ne yapacağım dediğinizi duyar gibiyim. git add –all komutu ile tüm dosyaların commit edileceğini belirtiyoruz. Ve artık git status dedikten sonra bu dosyanın artık untracked olmadığını görüyoruz. Şimdi klasördeki değişikliklerimizi uzak sunucuya (github’a) göndermek için öncelikle bunları git ‘e kaydetmeliyiz.
git commit -m “deneme.txt dosyasını oluşturup projeye dahil ettik” komutu ile projemizdeki değişiklikleri kaydediyoruz. -m parametresinden sonra commit mesajı yer alır. Genellikle burada yaptığınız değişiklikler hakkında bilgi verici bir yazı yazmanız beklenir. Terminalde aşağıdaki gibi bir sonuç aldıysanız projenizde ilk commit ‘inizi oluşturdunuz.
Her şey tamam ama projeye eklediğim bu txt dosyası github’ da oluşturduğum repoda yok. Peki bu dosya nerede? Korkuya kapılmayın. Dosyayı henüz github’ a yüklemedik. Github’ a yükleme işlemi için git push komutunu kullancağız.
git push origin master komutu ile master branch’ e yaptığımız commit değişikliklerini yüklüyoruz. Artık github repomuzda yaptığımız değişikliklerin güncellenmesini bekliyoruz.
Evet, değişikliklerimiz başarıyla github’ a yüklendi. Projede yapılacak tüm değişikliklerden sonra sırasıyla
git add –all ile tüm değişikliklerimizi commit’ e eklemek
git commit -m “değişiklik detayı” ile değişiklikleri kaydetmek
git push origin master komutu ile bu değişiklikleri github’a yükleyerek devam edebilirsiniz.
Mevcut bir projede dönüm noktası olarak kullanmak veya projeyi parçalara ayırmak isterseniz yeni bir proje oluşturmanıza gerek yok. Bu durumda yeni bir branch oluşturabilirsiniz. Peki branch oluşturmak bize ne gibi fayda sağlar? Örneğin bir projede çalışıyorsunuz ve versiyon 1.0.0 dan 1.0.1 e geçiş yapacaksınız. Versiyon değişikliğini ana(master) branch de yaparsanız 1.0.0 branch e dönmeniz mümkün olmayacaktır. Çünkü üzerine yazarak devam etmiş olacaksınız. Projenin 1.0.0 versiyonundayken git checkout -b release/1.0.0 yaparsanız ve ardından tekrar master branch e geçiş yapıp versiyon 1.0.1 için gerekli değişiklikleri yapıp yeniden git checkout -b release/1.0.1 komutuyla branch oluşturursanız artık geriye baktığınızda versiyon 1.0.0 ile 1.0.1 arasındaki farkları kolaylıkla görebileceksiniz. Hangi branch de olduğunuzu öğrenmek için terminale git status yazabilirsiniz.
Git komutları yazımdan şimdilik bu kadar.
İyi çalışmalar, esen kalın.