23.04.2019

git işleri

Git konusuna yabancıyım. Bu kısa giriş ilk başlayanlar için faydalı olabilir.

Elimizde bir proje var. Bunun üzerinde çalışıyoruz. Sürekli değişiklikler yapıyoruz. Yaptığımız değişikliklerin sürümlerini denetlemek istiyoruz. Hatta ortak çalışacak kişilerle birlikte kod paylaşımı yapabilmeyi, belki de açık kaynak kodlu projemizin başkalarının çalışmalarına taban olmasını umuyoruz. Bu amaçla git gibi bir sürüm kontrol sistemi kullanabiliriz.

Önce bir klasör oluşturup bunu git init ile "ilklendirelim". Sonrasına proje oluşurken bu klare yeni dosyalar da eklenecek. İşin bir noktasında uygun gördüğümüz dosyaları git add komutu ile hazırlık aşamasına (staging area) ekleyebiliriz. Bu aşamada henüz sürüm denetim sistemine dahil olan birşey yok. İstenen dosyalar eklendikten sonra hazırlık aşamasındaki dosyaların tümünü git commit komutu ile sürüm kontrol sistemine dahil edebiliriz. Bu adımdan sonra yerel bir depomuz (repository) oldu. Bu depoyu bir internet deposuyla eşzamanlı hale getirmemiz mümkün. Bunun için önce git remote add komutuyla önce bir uzak depo eklememiz, daha sonra da git push komutu ile yerel depomuzu uzaktakiyle eşzamanlı hale getirmemiz gerek.

İlk git yapılandırması için bir kullanıcı adı bir de eposta adresi gerek. İlk yapılandırma şöyle:

# git config --global user.name "kullanıcıadınız"
# git config --global user.email "eposta@adresiniz.com"

Mevcut ayarlarımızı ve ayarların nerden geldiğini görmek istersek:

# git config --list --show-origin
file:/home/metin/.gitconfig     user.name=kullanıcıadınız
file:/home/metin/.gitconfig     user.email=eposta@adresiniz.com


ya da tek tek bu bilgileri görmek için:

# git config user.name
kullanıcıadınız

olabilir.

İlk ayarlar yapıldı. Şimdi bir klasör yaratalım

# mkdir ~/Belgeler/git/proje1
# cd ~/Belgeler/git/proje1

ve bu klasörü git işlemleri için ayarlayalım (initialize). Bu işlem ile proje1 klasörünün içinde bir .git alt klasörü oluşturulur ve bu klasörün içinde projeye dahil edilen belgeler için sürüm denetlemesi (version control) yapılabilmesi mümkün olur:

# git init

Diyelim ki bu klasördeki tüm txt dosyalarını projeye dahil etmek istiyoruz. Bu durumda verilecek komut:

# git add *.txt

Yapılan değişklikler de git add ile kapsam içine alınmalı. Son olarak değişiklikleri işlemek için git commit kullanılır.

# git commit -m "tum txt dosyaları eklendi"

Burada -m ile son commit ile yapılan işlerin kısa bir özeti verilir, daha sonra geriye dönüp ne yapıldı diye bakılması durumuna karşı.

Buraya kadar yapılanların tümü yerel bilgisayar üzerindeydi. Şimdi oluşturulan verilerin örneğin Github'a senkronize edilmesine bakalım. Öncelikle Github üzerinde bir repository oluşturmamız gerek. Ben BuyukProje diye bir repository oluşturdum. Şimdi mevcut klasörü bu repository ile ilişkilendirmemiz gerek. Repository'nin adresin kopyalayıp aşağıdaki en son alana yapıştırıyorum.

# git remote add BuyukProje http://github.com/kullaniciadi/repository-adi.git

En son olarak commit edilen değişikliklerin git sunucusuna aktarılması için de

# git push -u BuyukProje master

komutu kullanılır. Bu aşamada Github kullanıcı adı ve şifresi istenebilir.

Yapılan işlerin bir kaydını görmek için

# git log

veya mevcut durumun bilgisini almak için

# git status

Hangi uzak sunucuları yapılandırdığımızı görmek için

# git remote

kullanılır. -v anahtarı ile URL ayrıntıları görüntülenebilir.

Öte yandan mevcut bir repository'nin kopyasını çıkarmak/indirmek istiyorsak şu komut kullanılır:

# git clone http://github.com/kullanıcı/proje3

Bu şekilde mevcut klasörün içinde proje3 alt klasörü oluşturulur ve içerik bu alt klasörün içinde yaratılır. Eğer sizin diskinizdeki alt klasör adının proje3'ten farklı birşey olmasını istiyorsak en sona bu klasör ismini yazabiliriz. Her iki durumda git init'te olduğu gibi bir .git alt klasörü daha yaratılarak sürüm denetimi için gerekli veriler burada depolanır.

Üzerinde değişiklik yapılan bir dosyanın tüm değişikliklerini geri alıp, en son repository'den alınan haline geri getirmek için ise

# git reset --hard

gibi birşey buldum, benim çok işime yaradı.

--
https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History
https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes

Hiç yorum yok: