GİT — Versiyon Kontrol Sistemi #2 Temel Kullanım ve Komutlar

Muhammet ŞAFAK
4 min readJun 8, 2022

--

Bir önceki post Git’e giriş niteliğindeydi ve sadece kurulum konusundan bahsetmiştim. Bu postta ise temel komut ve git kullanımından bahsediyor olacağım.

Çalışma Dizini; bilgisayarımızda projenin bulunduğu ve çalışma yapacağımız dizindir.
Geçiş/İndis Bölgesi; Git tarafından takip edilen dosyaları ve yapılan değişiklikleri barındıran alandır.
Yerel Repo; Sürümlerin tutulduğu (çalışma bilgisayarı üzerinde) alandır.
Uzak Repo; Sürümlerin tutulduğu (server üzerinde) alandır.

.gitignore Dosyası

Çalışma dizini içerisinde dosyalar üzerinde yapacağınız değişiklerin, Git tarafından izlenmemesi (geçiş bölgesine gönderilmemesi) ve repoya gönderilmemesi (commit edilmemesi) için Git’e bildirilmelidir. Bu bildirimi .gitignore dosyası yapar.

Not : Bir şeye dikkat etmeniz gerekiyor. Dosya adı olmayan, uzantısı gitignore olan bir dosyadan bahsediyorum.

Örneğin proje içerisinde çalışma alanınızda logların tutulduğu log.txt isimli bir dosyanız ve /logs/ diye bir dizininiz var ve haliyle bu log.txt dosyasının ve /logs/ dizininin git tarafından izlenmesini ve repoya gönderilmesini istemiyoruz. Ayrıca “.log” uzantılı dosyalarında izlenmesini istemediğimizi düşünelim. Öyleyse .gitignore dosyasının içeriği aşağıdaki gibi olmalıdır.

logs/
log.txt
*.log

Şimdi hangi dosyaların Git tarafından izlenmeyeceğini bildirdiğimize göre artık Git için bir çalışma dizini tanımlayabiliriz.

GİT Komutları

Git kullanımı için çeşitli ücretli ya da ücretsiz 3. parti yazılımlar bulunsa da temel kullanım şekli Git Bash ya da farklı bir terminal üzerinden komutlar aracılığıyladır.

Çalışma Dizinini Tanımlama

Bir dizini Git çalışma dizini olarak belirlemek için, ilgili dizinde Git Bash’i çalıştırın ve aşağıdaki komutu verin.

git init

Not: Terminal üzerinden bir klasöre ya da dizine nasıl ulaşacağınızı bilmiyorsanız. cd komutunu kullanabilirsiniz. Örneğin çalışma dizinim C:/Projects/DenemeProjesi şeklinde olduğunu varsayarak vereceğiniz komut: cd C:/Projects/DenemeProjesi şeklinde olmalıdır. Terminalin hali hazırda hangi dizinde çalıştığını pwd komutunu vererek öğrenebilirsiniz.

Durum Sorgulama (status)

Çalışma dizinindeki durumu sorgulamak için;

git status

komutu kullanılır.

Bu komut çalışma dizini içinde yapılan değişiklikleri içeren bir çıktı üretir. Yeni oluşturduğunuz dosyalar varsa bunlar Untracked yani izlenmeyen dosya olarak gösterilir.

Not : .gitignore dosyası ile bildirilmiş olan dosya ve dizinler burada gösterilmeyecektir.

Geçiş Bölgesine Ekleme (add)

İzlenmeyen dosyaların Git tarafından izlenmesini sağlamak için bunları Geçiş ya da İndis bölgesine eklemeniz gerekir. Bu işlem için;

git add .

komutu kullanılır.

Yukarıdaki komutta nokta “.” dizin içerisindeki her şeyi ifade eder. Tek bir dosyayı geçiş bölgesine eklemek için;

git add deneme.txt

şeklinde tek bir dosyayı geçiş bölgesine de ekleyebilirsiniz.

Çalışma dizini içerisinde yapılan tüm işlemleri geçiş bölgesine göndermek için -A bayrağı kullanılır.

git add -A

Yeni Bir Sürüm Oluşturmak (commit)

Yeni bir sürüm oluşturma ya da başka bir ifadeyle commit etmek, geçiş bölgesindeki dosyaları ve yapılan değişiklikleri yerel repo içerisine atmak için;

git commit -m 'ilk commit islemi'

komutu verilir.

Bu komutta -m sonrasında tırnaklar için yapılan commit işlemi için tanımlayıcı bir açıklama girmeyi alışkanlık haline getirin. Böylece geri dönmek istediğinizde hangi committe ne işlem yapıldığını kolayca anlayabilirsiniz.

Dosyayı Geçiş Bölgesinden Geri Alma

Bazı durumlarda geçiş bölgesindeki bir dosyayı tekrar çalışma dizinine almak isteyebiliriz. Bu durumda geçiş bölgesindeki dosyayı yeniden çalışma dizinine almak için;

git restore --staged dosyaadi.txt

Yerel Repodaki Son Sürüme Geri Dönme

Bir dosya üzerindeki yaptığınız değişiklikleri iptal ederek dosyanın yerel repodaki son sürümünü geri almak isterseniz;

git restore dosyaadi.txt

komutunu verebilirsiniz.

Önceki Commit İşlemlerini Görme

Projenizde yapılmış son commit işlemini görmek için;

git show

komutunu kullanabilirsiniz. Bu commit edilen son işlemi gösterecektir.

Yapılan tüm commit işlemlerini görmek için;

git log

komutunu kullanabilirsiniz. Bu şimdiye kadar yapılan tüm commit işlemlerinin tutulduğu log bilgisini çıktılayacaktır.

Commit tarihi, commit eden kişi gibi bilgileri görüntülemek istemiyorsanız --oneline ekleyebilirsiniz.

git log --oneline

Yukarıdaki komut yapılan commit işlemlerini tek bir satır şeklinde listeleyecektir.

Belli bir zaman öncesine kadar yapılan commit işlemlerini görmek için;

git log --since=10minutes

yukarıdaki komut son 10 dakika içerisinde yapılan commitleri çıktılayacaktır.

--since=5hours : 5 saat
--since=3days : 3 gün
--since=2weeks : 2 hafta

Sürümler Arasında Geçiş

Proje içerisinde commit edilmiş önceki sürümlerden herhangi birine dönmek isterseniz;

git checkout 72c32bb

komutunu kullanabilirsiniz. Bu komutta kullandığım 72c32bb geri dönmek istediğim commit’in kısa kimlik bilgisidir. Örnek işlemin ekran görüntüsü :

Son Sürümüne Dönme

Örneğin önceki bir commit sürümüne döndünüz ama sonrasında kararınızı değiştirdiniz ve yaptığınız tüm değişiklikleri vs. geri getirmek istiyorsunuz. Yani projenin commit edilmiş son sürümüne “master” dönmek istiyorsunuz.

git checkout master

Bir Commit Sürümünde Yapılan Değişiklikleri İptal Etmek

Bazı durumlarda bir commit sürümüne dönmek değil de bir commit sürümünde yapılan değişikliği iptal etmek isteyebilirsiniz.

git revert 72c32bb

bu komut 72c32bb kimlikli commit işleminde yapılan değişiklikleri iptal eder.

Not : Bu işlem geri dönmek değil, belirtilen committe yapılan işlemleri iptal etmektir.

Bu komut git kurulumu sırasında belirttiğiniz editörü açarak revert işlemi için commit mesajını düzenleyebilmeniz için açar. Ben VS Code olarak belirttiğim için bende VS Code ile açıldı. Aşağıdaki resimde gördüğünüz ilk satır commit mesajıdır. Burada yapılan işlem için bir commit mesajı yazarak dosyayı kaydedip kapatabilirsiniz.

Yapılan Tüm Commitleri İptal Etmek

Dikkat : Bu komut geri alınamaz şekilde yapılan ilk commit sürümüne dönüş yapar. Sonrasında geri almak mümkün olmadığı için bu komutu vermeden önce en az iki kez düşünmenizi tavsiye ederim.

Commit edilmiş tüm sürümleri iptal etmek ve ilgili sürüme kesin şekilde dönüş yapmak için reset komutu kullanılır.

reset komutunun kullanımına geçmeden önce bilmeniz gereken
--soft : Yerel repoyu geri alınamaz şekilde ilgili commite döndürür, çalışma ve geçiş alanına dokunmaz.
--mixed : Yerel repo ve geçiş alanını geri alınamaz şekilde ilgili commite döndürür. Çalışma alanına dokunmaz.
--hard : Her şeyi geri alınamaz şekilde ilgili commite döndürür.

72c32bb kimlikli commite kalıcı olarak dönmek için reset komutunun kullanımı;

git reset --soft 72c32bb

Bu postta temel git komutları ve temel git kullanımına değindim. Bir sonraki postta git dallarını (branch) ve branchler ile çalışma konusunu ele alacağım.

Muhammet ŞAFAK
https://www.muhammetsafak.com.tr

--

--