Git ve GitHub nasıl kullanılır

Git nedir ve projenizde Git’i nasıl kullanabilrsiniz

Emrullah Lüleci
8 min readJun 2, 2014

Git bir versiyon kontrol sistemidir. Peki versiyon kontrol sistemi nedir? Versiyon kontrol sistemi(VCS), en basit tanımıyla, projenizi geliştirirken yaptığınız değişiklikleri adım adım kaydedebildiğiniz ve isterseniz bunu internet üzerinde uzak bir depoda (remote repository) saklayabildiğiniz bir sistemdir. Versiyon kontrol sisteminin daha birçok özelliği var ama bu yazıda basit bir proje üzerinde basit örneklerden bahsedeceğim.

VCS aynı zamanda bir proje üzerinde takım olarak çalışmanızı kolaylaştımaktadır. VCS ile aynı proje üzerinde farklı kişiler tarafından yapılan değişiklikleri birleştirip ve ortaya çıkan çakışmaları da giderebilirsiniz.

Bu yazıda size

  • projeniz için Git deposu oluşturmayı,
  • projeniz üzerinde yaptığınız değişiklikleri nasıl kaydedeceğinizi,
  • projenizi uzak bir depoya (remote repository) nasıl yerleştireceğinizi

anlatacağım.

Bu yazıda Git’i kullanmanın yollarından bahsedeceğim kurulumundan değil. O yüzden Git’in bilgisayarınızda çoktan kurulu olduğunu varsayıyorum. Kurulum bu yazıda anlatılmayacaktır. Buradaki linkten veya başka kaynaklardan kurulumu öğrenebilirsiniz. Kurulumdan sonra da komut satırından git komutlarının çalışıyor olması gerekmektedir.

1- Projeniz için yerel Git deposu (repository) oluşturma

Projeniz yeni olsun veya olmasın tek satır komutla projeniz için Git deposu oluşturabilirsiniz.

Git kullanımı için proje türü önemli değil. Ben örnek olarak Sebepsiz Proje adında bir Android projesi oluşturdurdum ama siz herhangi bir proje ile kullanabilirsiniz.

Komut ekranını açın ve komut ekranından proje klasörünüze ilerleyin. Projenizin ana klasöründe olduğunuzdan emin olduktan sonra ‘git init’ komutunu girin.

komut satırından projeyi açma ve git’i başlatma

Bazı IDE’ler (ör: Android Studio) Git ayarlarını farkedip size Git proje ayarlarını yapmanız gerektiğini söyleyebilir. IDE’lerdeki bu eklentiler işinizi kolaylaştırabilir ama bu yazıda herhangi bir IDE’ye yönelik bir şey bulunmamaktadır.

Projenizin klasöründe .git adında gizli bir klasör oluşması gerekir. Şimdi de ‘git status’ komutunu girin. Bu komut projenizde en son yapılan kayıttan (commit) sonra yapılan değişiklikleri gösterir. Biz daha önce herhangi bir kayıt yapmadığımız için de şu an bütün dosyalar yeni birer değişiklik olarak görünmekte.

Şimdi de bütün dosyalarımızı kayıt listesine ekleyip ardından da kayıt yapacağız. Bunun için ‘git add .’ komutunu girin. Normalde ‘git add’ komutunun en sonuna eklemek istediğiniz dosyayı belirtirsiniz. Bizim komut sonunda kullandığımız nokta ise bütün dosyaları ekle anlamına gelmekte.

Kayıt işlemi için de ‘git commit -m “ilk kayit” ’ komutunu girin. Bu komutu girdiğiniz anda ekrana projenizdeki bütün dosyaların tek tek eklendiğini belirten satırlar görürsünüz.

Şu an tekrar ‘git status’ komutunu girerseniz ekranda en son yapılan kayıttan sonra herhangi bir değişiklik yapılmadığını gösteren bir yazı göreceksiniz.

Artık bilgisayarınızda projeniz için Git deponuz var. Projeniz üzerinde istediğiniz çılgınlıkları yapabilirsiniz. Çükü birşeyleri bozarsanız projenizi eski çalışan haline döndürmeka artık tek satır komutla mümkün olacaktır.

2- Temel Git komutları ve kullanımı

Şimdi de Git komutlarından en çok kullanılanları açıklayıp bir iki örnek göstereceğim.

Gidip projenizde herhangi bir dosyada birkaç değişiklik yapın ve sonra ‘git status’ komutunu kullanarak bu değişikliklerin deponuza nasıl yansıdığını görün. Ben projemde MainActivity.java dosyasında değişiklik yaptım ve sonuç bu şekilde oldu.

Benim kendi yaptığım değişiklikten sonra da .idea/misc.xml dosyasında otomatik bir değişiklik olmuş. Deponuz bütün dosyaları kapsadığı için değişikliği siz yapın veya yapmayın bütün değişiklikler kayıt altında tutulur.

Komut satırında son kayıttan sonra değişen dosyaların listesini görebilirsiniz. Şu an da yapacağımız şey dosyaları kayıta eklemek ve sonra da kayıt işlemini yapmak. Bunu biraz önce yaptığımız gibi sırasıyla ‘git add .’ ve ‘git commit -m “ikinci kayıt” ‘ şeklinde yapabilirsiniz. Ama bu sefer dosyaları ekleme komutunu kayıt komutuyla birleştirerek yapacağız. Komut satırına ‘git commit -am “ikinci kayıt” ‘ komutunu girin. Burada ek olarak kullandığımız a harfi kayıt işlemini yaparken bütün değişikliğe uğramış dosyaları da kayıta ekleyecektir.

Yapılan değişiklikleri görme

Kayıt işlemini yapmadan önce ‘git diff’ komutunu kullanarak kaydedilmeyen değişikliklerin (eklenen ve çıkarılan satırların) ne olduğunu görebilirsiniz. Uzun bir dosyada değişiklik yapıldıysa ‘enter’ tuşunu kullarak satır satır ilerlemeniz gerekmektedir. Dosyanın sonuna gelmek istemiyorsanız da klavyeden ‘q’ tuşuna basıp çıkabilirsiniz.

Yapılan değişiklikleri geri çevirme

Eğer yaptığınız değişiklikleri kaydetmek istemiyorsanız (örneğin son değişiklikler projenin bozulmasına sebep oldu ve geri eski haline döndürmek çok uzun sürüyorsa) ‘git reset —hard HEAD’ komutuyla projenizi en son kayıt yapılan haline döndürebilirsiniz.

Bu komutu kullanırken dikkatli olmak zorundasınız. Çünkü kaybetmek istemediğiniz değişiklikleri de yanlışlıkla silme ihtimaliniz var. O yüzden bu komutu kullanmadan önce yapılan değişiklikler arasında gerçekten silmek istemediğiniz bir kısım olup olmadığını iyice kontrol edin.

3-Projenizi uzak bir depoya (remote repository) yerleştirme

Projenizi uzak bir depoya yerleştirmek için önce öyle bir depoya sahip olmanız gerekmekte. İnternette bu hizmeti sağlayan GitHub ve BitBucket gibi servisler bulabilirsiniz. Ben yazının devamında GitHub üzerinden devam edeceğim.

GitHub’a kayıtlı değilseniz kaydolun. Eğer programcı olarak uzun yıllar çalışmayı düşünüyorsanız kesinlikle bir GitHub hesabı açmanız gerek. Profil sayfanızı açtığınızda orta kısımda üç tane sekme göreceksiniz. Bunlardan ilki (contributions) sahip olduğunuz veya katkı yaptığınız projeleri gösterir. İkinci kısım da (repositories) sahip olduğunuz veya üzerinde yetki sahibi olduğunuz depoları gösterir. Son sekme de (public activities) GitHub üzerindeki projelerde aleni yaptığınız faaliyetleri görürsünüz.

Şu an yapmamız gereken şey depolar sekmesine girip oradaki yeni düğmesine (en sağdaki yeşil düğme) basarak yeni bir depo oluşturmaktır.

Karşınıza çok basit bir form çıkacaktır. Formun en üstünde deponun sahibi olacak hesabı seçebileceğiniz (GitHub’da birden fazla hesap ile çalışıyorsanız) ve deponun ismini girebileceğiniz kısımlar var. Onların hemen altında da projenin basit bir açıklamasını gireceğiniz ve projenin herkese açık olup olmadığını seçebileceğiniz kısımlar var.

Eğer projenizi başka kişilerin görmesini istemiyorsanız gizli (private) seçeneğini tıklayın. Ama GitHub’da gizli depo kullanabilmeniz için para ödemek zorundasınız. Para vermeden gizli depo açmak isterseniz BitBucket’ı kullanabilirsiniz. Ayrıca Codebase ve Beanstalk’a da bir göz atabilirsiniz.

Formun en altında da projenizi ‘beni oku dosyasıyla beraber oluştur’ diye bir seçenek var biz onu kullanmayacağız. Onun hemen altında da iki tane seçenek var. Bunların açıklaması kısaca şöyle:

  • .gitignore: Bu dosya proje içinde bulunan ama uzak depoda bulunmasını istemediğiniz dosyaları içerir. Genelde asıl kullanım amacı, proje derlendiği zaman oluşan dosyaları uzak depoya koymamaktır. Ayrıca kullandığınız IDE e bağlı dosyaların da uzak depoya konmasını engelleyebilirsiniz. Çünkü bu dosyalar siz bilgisayarınızda derleme yaptığınızda oluşacaktır. Ayrıca her proje türünde (web, ios, android) konması gereksiz olan dosya türleri farklıdır.
  • licence: Lisans da depoya koyduğunuz projenin başkaları tarafından kullanılması durumunda sorumlu olacakları lisans şartlarını içerir.

Bu projemiz için bunları da geçeceğiz ama ileride .gitignore kullanmanızı şiddetle tavsiye ederim.

Ben şimdilik deneme adında bir proje oluşturuyorum. Daha sonra depoları silebildiğiniz şu için isime çok da önem vermeyebilirsiniz.

Create repository düğmesine basarak deponuzu oluşturun. Depo oluştuktan sonra karşınıza çıkan sayfada projenizi bu depoya nasıl koyabileceğinizi anlatan bir kısım göreceksiniz. Bizim zaten bir git projemiz olduğundan sadece projemizi bu depoya yükleme işlemi yapacağız. O da sayfadaki bu kısımda anlatılmış vaziyette zaten.

Projenizde yapılan değişiklikleri tekrar git status komutuyla kontrol edin ve kayıt edilmemiş bir değişiklik varsa bunları git commit -am “kayıt mesajı” komutuyla kaydedin. Ve artık bize GitHub sayfasında da gösterildiği gibi git remote add origin https://github.com/eluleci/deneme.git komutuyla projenizi uzak deponuz ile eşleştirebilirsiniz. (Tabi bu komutu kullanırken kendi deponuzun URL’sini kullanmalısınız.) Bu esnada size github hesabınız için kullanıcı adı ve parola sorulacaktır. Bu bilgileri de girerseniz projeniz uzak depo ile eşleşmiş olacaktır.

Ancak projenizi deponuzda hemen göremezsiniz. Projenizi depoya göndermek için de git push -u origin master komutunu kullanmalısınız. Bu komutu girdikten sonra komut satırında yükleme işlemi yapıldığını göreceksiniz. Bu esnada projeniz uzak depoya yükleniyor olacaktır ve sonuç olarak da komut ekranınız buna benzer bir sonuç göstermelidir.

Şimdi GitHub’daki proje sayfanıza giderseniz biraz önce size projenizi nasıl ekleyeceğiniz anlatan mesajlar yerine projenizin dosyalarını göreceksiniz.

Biraz önce de bahsettiğim gibi aslında GitHub deponuzda Android Studio dosyaları gibi gereksiz dosyalar olmaması lazım ve bunun için de .gitignore kullanmalısınız. Ama ben yazıyı çok daha karmaşıklaştırmamak için bunları es geçtim.

Yapılan değişiklikleri uzak depoya kaydetme

Artık bilgisayarımızda yerel bir git projesi ve uzakta da buna karşılık gelen bir uzak depo bulunmakta. GitHub içinde klasörlerde gezinerek dosyalarınıza bakabilirsiniz. Şimdi projede değişiklik yapıp bunu uzak depoya kaydedeceğiz.

Ben kendi projemde strings.xml dosyamdaki hello_world adlı değeri değiştiriyorum.

Uzak deponuzda GitHub sayfasından değişiklik yaptığınız dosyayı açarsanız orada bir değişikliğin olmadığını göreceksiniz.

Şimdi de git commit -am “ilk degisiklik” komutuyla değişikliği kayıt altına alın. Bu aşamada hala uzak deponuzda bir değişiklik olmayacaktır. Push komutunu kullanana kadar yaptığınız bütün değişiklikler yerel git deponuzda kalır. Bu değişikliklerin uzak depoda da etkisini göstermesini istiyorsanız git push origin master komutunu kullanın.

Bu komuttan sonra GitHub sayfasından değişiklik yaptığınız dosyayı açarsanız değişikliklerin buraya da yansıdığını görebilirsiniz.

Burada üst kısımda da baktığınız dosya üzerinde bu zamana kadar kaç kişinin değişiklik yaptığını, en son değişikliğin kim tarafından ne zaman yapıldığını ve bu değişikliğin mesajının da ne olduğunu görebilirsiniz.

Profil fotoğrafı bulunan satırda satırın en sonunda yazan ilk degisiklik yazısına tıklarsanız o kayıtta hangi değişikliklerin yapıldığını görebilirsiniz. (Aynı şekilde sağ üstteki History düğmesine basarak bu dosya üzerinde bu zamana kadar yapılan kayıtların listesini görebilirsiniz)

Sonuç

Sonuç olarak artık projemizde git kullanmaya başlamış olduk. Artık projenizde git’i nasıl kullanacağınızı, değişiklikleri nasıl kaydedeceğinizi, nasıl uzak depo oluşturup projenizi oraya aktarabileceğinizi biliyorsunuz.

Umarım bu anlatılanlar size zor gelmemiştir çünkü bu anlattıklarım daha buz dağının görünen kısmı. Asıl git kullanımı daha yeni başlıyor diyebilirim. Siz ilk olarak git’e alışmaya ve onu anlamaya çalışın. İleride, bir proje üzerinde birden fazla kişi olarak nasıl ve hangi yollarla çalışabilirsiniz onlardan da bahsedeceğim.

Umarım bu sayfadaki bilgiler işinize yarar ☺

Kolay gelsin

--

--