Sitemap
İnteraktif Web & Mobile Tribe

İnteraktif Web & Mobile Tribe Blogu, takım üyelerinin ve paydaşlarının farklı konulardaki güncel yazılarını içeren bir yayındır.

GIT — Global Information Tracker

5 min readMar 12, 2022

--

Git, açık kaynaklı dağıtık bir versiyon kontrol sistemidir. Ayrıca git sistemi git ile versiyonlanmaktadır. İlginç bir cümle değil mi? Git aslında git ile versiyonlanıyor. Github reposuna [Github — Git] adresinden erişebilirsiniz.

Şimdi bu içeriği oluştururken aklıma gelen garip bir olay var. Üniversite yıllarında yakın arkadaşımla beraber akşam yemeği için bir marketi gezerken “caldion” marka parfümleri görünce bana dönüp “Kal diyon kalıyo, git diyon gidiyo.” diye yaptığı ultra espri aklıma geldikçe gülüp gülüp duruyorum. Şu an ise bu içeriği yazarken aklımdan geçen “Git diyon gidiyo, kal diyon kalıyo” esprisi lütfen aklımdan çık, beni rahat bırak. Konuya dağıttık farkındayım hızlıca toparlıyorum.

Press enter or click to view image in full size
git --version

Git kurulumuna değinmek istemiyorum. Fakat bilgisayarımda mevcut olan git sürümü 2.32.0.windows.1'dir. Sizde git --version komutuyla mevcut sürümünüzü öğrenebilirsiniz.

Press enter or click to view image in full size
GIT — Global Information Tracker

Repository (Kod Deposu): Tüm kodlarımızın tarihçelerinin barındırıldığı depodur. Proje dizininde git init komutu çalıştırılarak o dizinde bir repository oluşturulabilir.

Working Directory (Çalışma Alanı): Projenizin ana dizinidir. Bir dosyanın working directory’de bulunması o dosyanın Git tarafından takip edildiği manasına gelmez. Sadece staging area’daki dosyalar git tarafından takip edilir.

Staging Area: Git tarafından takip edilen dosyalar bu alanda bulunur. Bu gerçek manada fiziki bir alan / klasör değildir. Dosyalarınızın durumunu belirten hayalî bir etikettir.

Commit (Taahhüt): Bir dosyada yaptığınız değişikliklerin kalıcı değişiklikler olduğunun taahhüdünü vermeniz gerekir. Böylece o dosyada yaptığınız değişiklikler repository’nize kaydedilir.

Örnek

Masaüstünde article adında bir klasör oluşturdum. Klasörü Visual Studio Code aracılığıyla açıp, klasör içerine app.js adında javascript dosyamı ekledim.

Press enter or click to view image in full size
app.js

Şimdi bu oluşturmuş olduğum js dosyasını git ile takip edebilmek için git repo’suna ihtiyaç vardır. Yani ilk adım olarak git repo’su oluşturmalıyız. Proje dizininde git init komutuyla beraber bu işlemi gerçekleştirelim.

Press enter or click to view image in full size
git init command

Bu yaptığımız işlemden emin olmak istiyorsak, dosya dizininde gizli öğeler seçeneğini işaretleyerek .git adındaki dosyayı görüntüleyebiliriz.

Press enter or click to view image in full size
.git init folder

Şu haliyle bizim app.js dosyamız git tarafından takip edilmiyor. Bu durumu git status komutuyla analiz edebiliriz.

Press enter or click to view image in full size
git status command

Henüz takip edilmeyen şeklinde app.js dosyamızı tespit etti. Aslında app.js dosyası sadece çalışma alanımız (Working Directory) içerisinde app.js dosyasını git ile takip edebilmek için staging area’ya dahil etmemiz gereklidir.

Press enter or click to view image in full size
git add {fileName}

git add app.js komutu ile git’e app.js dosyamızı takip et dedik ve yaptığımız işlemin çıktısını görmek amacıyla git status komutuyla bir sorgulama yaptık. Şu anda ise durum şu: Commit edilecek değişiklikler var ama commit edilmemiş. Eee doğru mu? Doğru tabii ki. O halde değişikliklerimizi git’in takip etmesini de sağladıysak commit (taahhüt) edelim ve sonuçlarına bakalım.

Press enter or click to view image in full size
git commit -m ‘enter a message’

İlk commit hayırlı olsun diyelim. Commit hakkındaki en önemli konu her bir commit’in tek bir göreve hizmet etmesi gerekmektedir. Örneğin atılan bir commit hem servis modülüyle hem de satış modülüyle ilgili değişiklikleri içermemelidir. Her bir commit yalnızca ilgili değişiklikleri barındırmalıdır. Commitler hakkında daha detaylı bir içerik arıyorsanız Git Commit Mesajlarımız Nasıl Olmalı? Başlıklı içeriğe davet edeceğim.

Get Cihat Solak’s stories in your inbox

Join Medium for free to get updates from this writer.

Bir diğer konu ise örneğin, app.js dosyasında değişiklikler yaptınız ama bir baktınız ki ortalık <<Allahlık>> olmuş. Dosyasının en son çalışır haline dönmek istiyorsunuz. O halde git restore {fileName}komutuyla beraber derdinize derman bulabilirsiniz.

Press enter or click to view image in full size
git restore app.js

showMessage metoduna showMessage(message, title) şeklinde title parametresi eklemiştim. Bu ekleme işleminden sonra git status komutuyla beraber son durumumu öğrendim ve yukarıdaki görsel de de görüldüğü üzere app.js dosyamda bir değişiklik olduğunu ama commit edilmediğini görmüş olduk. Fakat yaptığım değişiklikleri commit etmekten vazgeçtim ve dosyanın eski çalışır haline dönmek istediğimden ötürü git restore app.js komutunu kullanarak app.js için tüm değişiklikleri geri aldım.

Reklam Arası (gitignore..)

Projenizde git tarafından takip edilmesini istemediğiniz dosyalarınız mı var? Başınıza bela mı oluyor? O halde .gitignore için sizleri Eyvahh .gitignore dosyasını unuttum ! adlı içeriğine davet ediyorum.

Projede .gitignore dosyasına eklenen dosyalar ve klasörler versiyonlanmazlar. Eğer hazır gitignore şablonlarına ihtiyacınız olursa https://github.com/github/gitignore adresinden temin edebilirsiniz.

- Log ?

Dosyanızda hangi tarihte ne değişiklikler yaptığınızı merak ederseniz, istediğiniz commite geri dönebilirsiniz. Bunun için önce git log komutuyla commit listemize göz atalım.

Press enter or click to view image in full size
git log

Yukarıdaki görsele bakarak şunu diyebiliriz. Yahu acaba bir önceki commit’le bir sonraki commit arasındaki fark nedir? Bu sorunun cevabı git diff {commitId} komutuyla çözümlenir. Her bir commit’in bir benzersiz kimliği (id)’si bulunmaktadır. O halde 343c62b98 ile başlayan ikinci commit ile mevcut arasındaki farkı aşağıdaki şekilde görüntüleyebiliriz.

git diff 343c62b9892ccc012b96373922949b7df7cb239d

Ben eğer 343c62b98 id’li ikinci commit’e geri dönmek istersem git checkout ile bunu gerçekleştirebilirim.

Press enter or click to view image in full size

git checkout 343c62b9892ccc012b9637.... commit’ine checkout yaparak geri dönüş sağladım. Yukarıda da farkettiğiniz ikinci commit’e geri dönüş yaptığımdan dolayı üçüncü committe yer alan showConsoleAndAlertMessage() metotu kaldırıldı. Çünkü bu metotu üçüncü commitimizde yazmıştık.

git init

ile çalışma alanımıza git’i dahil ettik ve klasör içerisinde hidden items checkbox’ını seçerek git tarafından eklenen dosyayı görüntüledik.

git status

ile branch’in o andaki durumunu görüntüledik.

git restore {fileName}

ile belirttiğimiz dosya içerisinde yaptığımız değişikliklerin tamamını geri aldık.

git add {fileName}

ile git’e app.js dosyasını takip etmesini söyledik.

git commit -m ‘commit message’

ile değişikliklerimizi commit(taahhüt) ettik.

git diff {commitId}

ile belirlediğimiz commit id ile mevcut arasındaki farkı görüntüledik.

git log

ile tüm commit listemize göz attık

git checkout {commitId}

ile belirlediğimiz commit’e geri dönüş yaptık.

--

Cihat Solak
Cihat Solak

Written by Cihat Solak

You'd really like me once you get to know me.

İnteraktif Web & Mobile Tribe
İnteraktif Web & Mobile Tribe

Published in İnteraktif Web & Mobile Tribe

İnteraktif Web & Mobile Tribe Blogu, takım üyelerinin ve paydaşlarının farklı konulardaki güncel yazılarını içeren bir yayındır.