Conrado Sol
- 29 Nis 2026
- 59 Mesaj
Aktiflik
Seviye
Deneyim
Merhabalar,
Bu yazıda sizlere kısaca Git uygulamasından ve temel kullanımından bahsedeceğim. Öncelikle "Git nedir?" sorusuna değinelim. Git bir versiyon kontrol programıdır. Versiyon kontrol programı, genelde yazılım uygulamaları geliştirilirken kullanılan, mevcut yazılımı versiyonlamaya ve adım adım kontrol etmeye yarayan programların geneline verilen isimdir. Git uygulaması da en çok kullanılan versiyon kontrol programlarından birisidir. Git'in yanı sıra SVN (Subversion), Mercurial, Bazaar gibi birçok program, uygulama geliştirilirken yardım alınan versiyon kontrol programlarından bazılarıdır. Git uygulamasının popüler olmasının nedenlerinin başında; ücretsiz olması, cross-platform (çapraz platform) çalışabilmesi, Linus Torvalds tarafından geliştirilmiş olması, hem konsol hem de GUI (görsel arayüz) aracılığı ile kullanılabiliyor olması ve Git üzerine halihazırda birçok web servisinin bulunması gibi faktörleri sayabiliriz.
Versiyon kontrol programları, ağırlıklı olarak birden fazla kişinin aynı proje üstünde çalıştığı durumlarda oldukça büyük kolaylık sağlar. Bu programlar aracılığı ile hangi programcının, hangi dosya üzerinde, ne zaman değişiklik yaptığını ve neleri değiştirdiğini kolaylıkla takip edebilirsiniz. Bu sayede birlikte çalışabilme verimliliği kazanıp uygulamanın düzenli bir şekilde gelişimini sağlayabilirsiniz.
Öncelikle Git uygulamasını bilgisayarımıza kurup, Git'i destekleyen herhangi bir siteden kendimize bir hesap açabiliriz. En çok bilinen ve kullanılan Git sitesi "www.github.com" sitesidir. Yazının gidişatını sadece Git komutları üzerine kuracağımdan dolayı görsel içerik barındıran kısımları şimdilik atlayacağım. Ancak forumda bu konuda yazılmış yazılar mevcut, arama kısmından "github" anahtar kelimesi ile arama yaptığınız zaman kolayca bulabilirsiniz.
Bu yazıda, GitHub sitesinde projemiz için bir sayfa (repo) oluşturduktan sonra sitenin bize vereceği bağlantı yollarından SSH (Git protokolü) ile çalışanını kullanacağız. Burada önemli bir noktayı es geçmemek lazım: Bu projeye katkı sağlayacak kişilerin (collaborator) SSH anahtarlarının (key) proje sayfasına eklenmesi ve böylelikle programcıya değişiklikler yapabilmesi için izin verilmesi gerekmektedir.
Bu işlemi kısaca şu komutla yapabiliriz:
Bu komut, kullanıcı dizinimizde .ssh klasörü içerisine id_rsa.pub adında bir dosya çıkaracaktır. Dosya içerisindeki uzun metin (string), bizim bilgisayarımızın SSH anahtarıdır. Bunu proje sayfasındaki (veya hesap ayarlarınızdaki) "SSH Keys" / "Deploy Keys" sekmesi altına ekleyerek kullanıcıya proje üzerinde değişiklik yapabilme hakkı tanıyabiliriz.
Proje Kodlarının Bilgisayara Alınması
Bunun için Git'in clone (klonlama) komutunu kullanacağız. Proje linkimizin [email protected]:x_user/x_project.git olduğunu varsayalım.
komutu, uzak Git sunucusundaki kodları bu komutu çalıştırdığımız dizine çekecektir. Artık projenin bir adet kopyası bilgisayarımızda mevcut. Bundan sonra yapacağımız işlemler; sunucuya (server) yükleme yapmak veya başkasının yaptığı değişiklikleri sunucudan kendi bilgisayarımıza alma işlemleri olacaktır. Bu işlemlerden önce başka birkaç Git komutundan bahsetmek istiyorum. Bunlardan birincisi;
komutudur. Bu komut, yerel bilgisayarımız ile sunucu arasındaki kod farklılıklarından bizi haberdar eder. git status komutunu çalıştırdıktan sonra "new, modified, deleted, merge" gibi etiketler ile dosya isimleri sıralanır. Etiket isimlerinden de dosyaların ne tür dosyalar olduğu açıktır: Yeni dosya, değiştirilmiş dosya, silinmiş dosya veya birleştirilecek dosya. Değiştirilmiş dosyalarda aradaki farkları anlamak için;
komutu bize yardımcı olacaktır. Bu komutun çıktısını yorumlamak biraz zor olabilir. Standart diff komutu ile aynı çıktıyı verir. Her ne kadar diff programını iyi biliyor olsanız da genelde konsoldan okuması uzun süren ve yorucu bir işlemdir. Biz bunun için;
komutunu kullanacak ve bu sayede iki dosya arasındaki değişimi görsel arayüze sahip bir programda rahatlıkla okuyabileceğiz. Ben bu işlem için "Meld" isimli programı tercih ediyorum. Meld benzeri işlem yapan çok fazla uygulama mevcut, siz hangisini beğenirseniz onu kullanabilirsiniz.
Değişikliklerin Sunucuya Gönderilmesi
Peki, şimdi değişikliklerin nasıl göründüğünü ve izlendiğini öğrendik. Değişiklik yapmış olduğumuz x_file.cpp dosyasını ve silmiş olduğumuz y_file.cpp dosyasını sunucuya ekleyelim/bildirelim
komutları, yerel bilgisayarımızdaki Git uygulaması indeksine x_file.cpp, y_file.cpp ve x_file.h dosyalarını ekledi. y_file.cpp dosyasını silmiş olduğumuz için -A parametresi ile ekleme işlemi yapıyoruz. x_file.h dosyasını ise yanlışlıkla ekledik diyelim. Bunun için;
komutunu çalıştırıp bu dosyayı takip indeksinden çıkarabiliriz. Eğer eklediğimiz tüm dosyalar yanlış ise;
komutu toptan bir temizliğe gidecektir
Dosyaları ekledikten sonra yapmamız gereken şey, ekleme işlemine onay vermek ve bu işlem için açıklayıcı bir mesaj yazmak olacaktır.
komutu onay işlemini ve mesajını gerçekleştirir. Artık son adıma geldik. Bu adımda, yaptığımız dosya işlemlerini sunucu bilgisayara bildirmemiz gerekmektedir.
komutu yapmış olduğumuz tüm değişiklikleri sunucuya gönderir. Daha fazla ileri gitmeden bu noktada söylemek istediğim bir şey var: Bu işlemleri ilk kez gerçekleştirirken Git uygulaması bizden global olacak birtakım bilgiler ister. Bunlar; kullanıcı adı, e-posta adresi ve push işlemini nasıl gerçekleştirmek istediğimizdir. Bu bilgilerin yanı sıra başka global ayarları da yapmamız mümkün fakat temelde istenenler bu 3 bilgidir. Bunları nasıl gireceğinizi Git'in uyarı mesajları size söyleyecektir, o yüzden konuya ekleme yapmıyorum.
Logların Kontrolü ve Değişiklikleri Çekme
Biz bu işlemleri yaptıktan sonra başka bir programcı da z_file.cpp dosyasını güncellemiş olsun. Bu kullanıcının yaptığı değişikliği kendi bilgisayarımıza almadan önce logları kontrol etmek isteyebiliriz.
komutu bize yapılan değişiklikleri birkaç ek bilgi ile sunmaktadır. Bu ek bilgiler; kullanıcı adı, zaman bilgisi ve log (commit) kodunu içerir. Bu sayede kimin, ne zaman, hangi dosya üzerinde değişiklik yaptığını görebiliriz. Ne tür değişiklik yapıldığını öğrenmek içinse;
komutunu kullanabiliriz. Logları görüntülemek ve değişiklikleri konsoldan anlamak, temel kullanıcılar için zorluk içerebilen işlemlerdir. Tüm bu komutları tek tek çalıştırmak yerine doğrudan git difftool bize her şeyi güzelce sunacaktır. Ayrıca daha detaylı bilgi gösteren Git-GUI, Giggle gibi çok güzel görsel uygulamalar da internette mevcut, bunları da deneyebilirsiniz. Son adımda;
komutu ile diğer programcının yaptığı değişiklikleri kendi bilgisayarımıza çekebiliriz.
Branch (Dallanma) ve Tag (Etiketleme)
Son olarak, yapacağınız değişiklikler çok büyük çaplı değişimler içeriyorsa, ana kod (master/main branch) üzerinde çalışmak istemeyebilirsiniz. Bunun için Git bize şu komutu sunmakta;
Bu komut bize master branch'e paralel olan yeni bir çalışma sahası (dal) oluşturur. Sadece git branch komutu ise bize mevcut branch listesini sunar. Oluşturduğunuz bu yeni branch'e geçiş yapmak için
komutunu kullanırız. (İsterseniz git checkout -b <branch_adi> ile hem oluşturup hem de tek adımda geçiş yapabilirsiniz). Bir branch'i silmek istediğinizde ise;
komutu ile çalışabilirsiniz. Ek olarak "tamam bu oldu" dediğiniz ara veya ana versiyon kodlarınızı etiketlemek için;
komutu ile tag oluşturabilirsiniz. Sadece git tag komutu mevcut tag'leri listeleyecektir.
komutu ile versiyonlarınız (etiketleriniz) arasında geçiş yapabilirsiniz. Tag ve branch çalışmalarınızı push ve merge etmek normalden biraz farklıdır. Detaylı bilgi için Git'in oldukça kapsamlı yazılmış olan kendi kılavuzunu (manual) okuyabilir veya git-scm ve GitHub sitelerinden yardım alabilirsiniz.
Yazıyı geç saatte hazırladığım için gözümden kaçan ufak hatalar olmuş olabilir. Lütfen gördüğünüz eksikleri veya hataları konu altında belirtmekten çekinmeyin. Faydalı olması dileğiyle!
Bu yazıda sizlere kısaca Git uygulamasından ve temel kullanımından bahsedeceğim. Öncelikle "Git nedir?" sorusuna değinelim. Git bir versiyon kontrol programıdır. Versiyon kontrol programı, genelde yazılım uygulamaları geliştirilirken kullanılan, mevcut yazılımı versiyonlamaya ve adım adım kontrol etmeye yarayan programların geneline verilen isimdir. Git uygulaması da en çok kullanılan versiyon kontrol programlarından birisidir. Git'in yanı sıra SVN (Subversion), Mercurial, Bazaar gibi birçok program, uygulama geliştirilirken yardım alınan versiyon kontrol programlarından bazılarıdır. Git uygulamasının popüler olmasının nedenlerinin başında; ücretsiz olması, cross-platform (çapraz platform) çalışabilmesi, Linus Torvalds tarafından geliştirilmiş olması, hem konsol hem de GUI (görsel arayüz) aracılığı ile kullanılabiliyor olması ve Git üzerine halihazırda birçok web servisinin bulunması gibi faktörleri sayabiliriz.
Versiyon kontrol programları, ağırlıklı olarak birden fazla kişinin aynı proje üstünde çalıştığı durumlarda oldukça büyük kolaylık sağlar. Bu programlar aracılığı ile hangi programcının, hangi dosya üzerinde, ne zaman değişiklik yaptığını ve neleri değiştirdiğini kolaylıkla takip edebilirsiniz. Bu sayede birlikte çalışabilme verimliliği kazanıp uygulamanın düzenli bir şekilde gelişimini sağlayabilirsiniz.
Öncelikle Git uygulamasını bilgisayarımıza kurup, Git'i destekleyen herhangi bir siteden kendimize bir hesap açabiliriz. En çok bilinen ve kullanılan Git sitesi "www.github.com" sitesidir. Yazının gidişatını sadece Git komutları üzerine kuracağımdan dolayı görsel içerik barındıran kısımları şimdilik atlayacağım. Ancak forumda bu konuda yazılmış yazılar mevcut, arama kısmından "github" anahtar kelimesi ile arama yaptığınız zaman kolayca bulabilirsiniz.
Bu yazıda, GitHub sitesinde projemiz için bir sayfa (repo) oluşturduktan sonra sitenin bize vereceği bağlantı yollarından SSH (Git protokolü) ile çalışanını kullanacağız. Burada önemli bir noktayı es geçmemek lazım: Bu projeye katkı sağlayacak kişilerin (collaborator) SSH anahtarlarının (key) proje sayfasına eklenmesi ve böylelikle programcıya değişiklikler yapabilmesi için izin verilmesi gerekmektedir.
Bu işlemi kısaca şu komutla yapabiliriz:
Bash:
ssh-keygen
Bu komut, kullanıcı dizinimizde .ssh klasörü içerisine id_rsa.pub adında bir dosya çıkaracaktır. Dosya içerisindeki uzun metin (string), bizim bilgisayarımızın SSH anahtarıdır. Bunu proje sayfasındaki (veya hesap ayarlarınızdaki) "SSH Keys" / "Deploy Keys" sekmesi altına ekleyerek kullanıcıya proje üzerinde değişiklik yapabilme hakkı tanıyabiliriz.
Proje Kodlarının Bilgisayara Alınması
Bunun için Git'in clone (klonlama) komutunu kullanacağız. Proje linkimizin [email protected]:x_user/x_project.git olduğunu varsayalım.
Bash:
git clone [email protected]:x_user/x_project.git
komutu, uzak Git sunucusundaki kodları bu komutu çalıştırdığımız dizine çekecektir. Artık projenin bir adet kopyası bilgisayarımızda mevcut. Bundan sonra yapacağımız işlemler; sunucuya (server) yükleme yapmak veya başkasının yaptığı değişiklikleri sunucudan kendi bilgisayarımıza alma işlemleri olacaktır. Bu işlemlerden önce başka birkaç Git komutundan bahsetmek istiyorum. Bunlardan birincisi;
Bash:
git status
komutudur. Bu komut, yerel bilgisayarımız ile sunucu arasındaki kod farklılıklarından bizi haberdar eder. git status komutunu çalıştırdıktan sonra "new, modified, deleted, merge" gibi etiketler ile dosya isimleri sıralanır. Etiket isimlerinden de dosyaların ne tür dosyalar olduğu açıktır: Yeni dosya, değiştirilmiş dosya, silinmiş dosya veya birleştirilecek dosya. Değiştirilmiş dosyalarda aradaki farkları anlamak için;
Bash:
git diff
komutu bize yardımcı olacaktır. Bu komutun çıktısını yorumlamak biraz zor olabilir. Standart diff komutu ile aynı çıktıyı verir. Her ne kadar diff programını iyi biliyor olsanız da genelde konsoldan okuması uzun süren ve yorucu bir işlemdir. Biz bunun için;
Kod:
git difftool
komutunu kullanacak ve bu sayede iki dosya arasındaki değişimi görsel arayüze sahip bir programda rahatlıkla okuyabileceğiz. Ben bu işlem için "Meld" isimli programı tercih ediyorum. Meld benzeri işlem yapan çok fazla uygulama mevcut, siz hangisini beğenirseniz onu kullanabilirsiniz.
Değişikliklerin Sunucuya Gönderilmesi
Peki, şimdi değişikliklerin nasıl göründüğünü ve izlendiğini öğrendik. Değişiklik yapmış olduğumuz x_file.cpp dosyasını ve silmiş olduğumuz y_file.cpp dosyasını sunucuya ekleyelim/bildirelim
Bash:
git add x_file.cpp
git add -A y_file.cpp
git add x_file.h
komutları, yerel bilgisayarımızdaki Git uygulaması indeksine x_file.cpp, y_file.cpp ve x_file.h dosyalarını ekledi. y_file.cpp dosyasını silmiş olduğumuz için -A parametresi ile ekleme işlemi yapıyoruz. x_file.h dosyasını ise yanlışlıkla ekledik diyelim. Bunun için;
Bash:
git rm --cached x_file.h
komutunu çalıştırıp bu dosyayı takip indeksinden çıkarabiliriz. Eğer eklediğimiz tüm dosyalar yanlış ise;
Bash:
git reset
komutu toptan bir temizliğe gidecektir
Bash:
git commit -m "x_file.cpp eklendi, y_file.cpp silindi"
komutu onay işlemini ve mesajını gerçekleştirir. Artık son adıma geldik. Bu adımda, yaptığımız dosya işlemlerini sunucu bilgisayara bildirmemiz gerekmektedir.
Bash:
git push
komutu yapmış olduğumuz tüm değişiklikleri sunucuya gönderir. Daha fazla ileri gitmeden bu noktada söylemek istediğim bir şey var: Bu işlemleri ilk kez gerçekleştirirken Git uygulaması bizden global olacak birtakım bilgiler ister. Bunlar; kullanıcı adı, e-posta adresi ve push işlemini nasıl gerçekleştirmek istediğimizdir. Bu bilgilerin yanı sıra başka global ayarları da yapmamız mümkün fakat temelde istenenler bu 3 bilgidir. Bunları nasıl gireceğinizi Git'in uyarı mesajları size söyleyecektir, o yüzden konuya ekleme yapmıyorum.
Logların Kontrolü ve Değişiklikleri Çekme
Biz bu işlemleri yaptıktan sonra başka bir programcı da z_file.cpp dosyasını güncellemiş olsun. Bu kullanıcının yaptığı değişikliği kendi bilgisayarımıza almadan önce logları kontrol etmek isteyebiliriz.
Bash:
git log
komutu bize yapılan değişiklikleri birkaç ek bilgi ile sunmaktadır. Bu ek bilgiler; kullanıcı adı, zaman bilgisi ve log (commit) kodunu içerir. Bu sayede kimin, ne zaman, hangi dosya üzerinde değişiklik yaptığını görebiliriz. Ne tür değişiklik yapıldığını öğrenmek içinse;
Bash:
git show <log_numarasi>
komutunu kullanabiliriz. Logları görüntülemek ve değişiklikleri konsoldan anlamak, temel kullanıcılar için zorluk içerebilen işlemlerdir. Tüm bu komutları tek tek çalıştırmak yerine doğrudan git difftool bize her şeyi güzelce sunacaktır. Ayrıca daha detaylı bilgi gösteren Git-GUI, Giggle gibi çok güzel görsel uygulamalar da internette mevcut, bunları da deneyebilirsiniz. Son adımda;
Bash:
git pull
komutu ile diğer programcının yaptığı değişiklikleri kendi bilgisayarımıza çekebiliriz.
Branch (Dallanma) ve Tag (Etiketleme)
Son olarak, yapacağınız değişiklikler çok büyük çaplı değişimler içeriyorsa, ana kod (master/main branch) üzerinde çalışmak istemeyebilirsiniz. Bunun için Git bize şu komutu sunmakta;
Bash:
git branch <branch_adi>
Bu komut bize master branch'e paralel olan yeni bir çalışma sahası (dal) oluşturur. Sadece git branch komutu ise bize mevcut branch listesini sunar. Oluşturduğunuz bu yeni branch'e geçiş yapmak için
Bash:
git checkout <branch_adi>
komutunu kullanırız. (İsterseniz git checkout -b <branch_adi> ile hem oluşturup hem de tek adımda geçiş yapabilirsiniz). Bir branch'i silmek istediğinizde ise;
Bash:
git branch -d <branch_adi>
komutu ile çalışabilirsiniz. Ek olarak "tamam bu oldu" dediğiniz ara veya ana versiyon kodlarınızı etiketlemek için;
Bash:
git tag -a <tag_adi> -m "versiyon mesaji"
komutu ile tag oluşturabilirsiniz. Sadece git tag komutu mevcut tag'leri listeleyecektir.
Kod:
git checkout <tag_adi>
komutu ile versiyonlarınız (etiketleriniz) arasında geçiş yapabilirsiniz. Tag ve branch çalışmalarınızı push ve merge etmek normalden biraz farklıdır. Detaylı bilgi için Git'in oldukça kapsamlı yazılmış olan kendi kılavuzunu (manual) okuyabilir veya git-scm ve GitHub sitelerinden yardım alabilirsiniz.
Yazıyı geç saatte hazırladığım için gözümden kaçan ufak hatalar olmuş olabilir. Lütfen gördüğünüz eksikleri veya hataları konu altında belirtmekten çekinmeyin. Faydalı olması dileğiyle!
