GİT — Versiyon Kontrol Sistemi #2 Temel Kullanım ve Komutlar
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