İçerik
Artik SVN/Git sistemleri kullanmamak gibi bir devir kalmadi gibi birsey… Hala kullanmiyorsaniz o sizin ayibiniz :)
Bu yazimda basit Git komutlarina deginecegim;
Git Olusturma
Olusturma kelimesi ne kadar dogru bilemem de Ingilizcede initialize olarak gecen, kisaca init olarak kullanilan kelime neyse iste ondan…
1 |
git init |
Initialize yaptigimizda klasorde git alt yapisini (klasor yapisini) olusturur.
Duruma Bakma
Ingilizcedeki status
kelimesi Turkce’ye durum olarak cevirilebilir. Repository’mizin durumuna bakmak cogu zaman yapmamiz gereken bir adimdir. Bize repo ile ilgili bilgi verir ve duruma gore islem yapmamizi saglar.
1 |
git status |
Repository Klonlama
Bir repository’yi klonlamak en basit islemlerden birisidir. Tek sart hedef klasorun olmamasi ya da bos olmasidir (bazilari klasor olsa da icini bosaltiyor vs o ayri bir konu fakat Git SCM uzerinden konusacagim)
1 |
git clone repository_url [klasor_adi] |
Repository url olarak ornegin Github’da bir repository’ye girdiginizde Clone or Download
yazan buttonda altta cikan linki kullanacaksiniz:
Klasor adi ise zorunlu degildir fakat ogrenmenizde de fayda var elbette.
Ornek olarak
1 |
git clone git@github.com:ahmetertem/query_builder.git qb |
yapabilirsiniz. Eger SSH Key ayarlamadiysaniz hata verebilir, onu da farkli bir yazida anlatacagim simdilik Ingilizce makalelere bakabilirsiniz.
Repository’ye Dosya Ekleme
Dosya eklemek ve commit etmek iki ayri istir, hatta yukariya (sunucuya) yuklemek ayri islerdir. Bunu adim adim isleyecek olursak, dosyalari eklemek, commit etmek ve yukari yuklemek (pushlamak) olarak sirayla gitmemiz gerekiyor.
Dosyalari Ekleme
Dosyalari repository’ye eklemek icin add
argumanini kullanacagiz.
Ornegin;
1 2 3 4 |
// repository root dizininden; git add dosyaadi.uzanti git add klasor/yolu/dosyaadi.uzanti git status |
Repositorymizin root dizinindeyken bu sekilde ekleyebiliriz, root dizinde degilsek cd
ile dolasarak islem yapabiliriz.
Ornegin;
1 2 3 4 5 6 7 8 9 |
// root dizinden yola cikarak hareket edecegiz. cd images git add logo.png cd .. cd scripts git add layout.js git add npm.js cd .. git status |
Dosyalari Commit Etme
Add yaparak degisiklik yapilmis, eklenmis, silinmis dosyalari vs commit’imiz icin hazirladik. Simdi sira commit etmede. Commit etmeyi islemek olarak adlandirabiliriz. Yani; su, su dosyayi ekledim, su dosyayi sildim, bunu guncelledim vs diyoruz.
Commit ederken bir de mesaj yazmamiz gerekiyor, neyi ekledik sildik gibi fakat cok da abartmamak gerek zaten committe neler degisti gorulebiliyor. Ornegin “#123. bug giderildi” yazabiliriz. Tutup da a dosyasi eklendi, b dosyasi silindi gibi uzun uzadiya mesaj yazmaniza gerek yok, ornek olarak burayi inceleyebilirsiniz. Ornekteki commit detayinda sadece 1 tane dosyada degisiklik yapildigi icin sadece o dosyanin degisikliklerini gorebilirsiniz fakat farkli repolara bakarak o committe neler degismis gorebilirsiniz.
1 |
git commit -m 'mesajimizi buraya yaziyoruz' |
Yukarida tek satirlik bir ornek yaptik.
-m
ile direk mesajimizi yazabiliriz. Alternatif olarak direk git commit
diyerek vim gibi mesajimizi yazabilir ve degisiklige detayli yazi yazabilirdik.
Commit(ler)i Pushlama
Pushlamak, yukari atmak olarak da adlandiracagimiz bir adim… Dosyalari duzenledik, sildik, ettik artik sira degisiklikleri ana repository’ye atmakta.
1 |
git push [remote_adi] [branch_adi] |
Ornegin;
1 |
git push origin master |
Uzak Repo’dan Guncel Hali Cekmek
Remote (uzak) repository’den son guncel halini cekmek icin oncelikle fetch, ardindan pull yapacagiz.
Fetch
Fetch, Ingilizcede ‘git, al, getir‘ demektir (ya da oyle birsey). Fetch ettigimizde ise son guncel halinin sadece durumunu getirir. Yani su degisti, bu degisti gibi… Degisiklikleri cekmek icin ise pull’u kullanacagiz.
1 |
git fetch [remote_ismi] |
Ornegin;
1 |
git fetch origin |
Varsayilan isim, belirtmemisseniz eger “origin” dir…
Pull
Pull, cekmek demektir. Degisiklikleri aldik, artik cekebiliriz. Fetch yapmadan pull yaparsaniz fetchlemis oldugunuz son halini cekersiniz.
1 |
git pull [remote_adi] [branch_adi] |
Ornegin;
1 2 |
git fetch origin git pull origin master |