Linux’ta Kurulum
Git’i Linux sisteminize paket kurucu yardımıyla kurmak istiyorsanız, bunu genellikle dağıtımınızla birlikte gelen temel paket yönetim aracıyla yapabilirsiniz. Fedora kullanıcısıysanız, yum’u kullanabilirsiniz:
$ yum install git-core
Ubuntu gibi Debian-tabanlı bir sistemdeyseniz, apt-get’i kullanabilirsiniz:
$ apt-get install git
Mac’te Kurulum
Git’i Mac’te kurmak için iki kolay yol vardır. En kolayı, SourceForge sayfasından indirebileceğiniz görsel Git yükleyicisini kullanmaktır (bkz. Figür 1-7).
http://sourceforge.net/projects/git-osx-installer/
Figür 1-7. Git OS X yükleyicisi.
Diğer başlıca yol, Git’i MacPorts (http://www.macports.org
) vasıtasıyla kurmaktır. MacPorts halihazırda kurulu bulunuyorsa Git’i şu komutla kurabilirsiniz:
$ sudo port install git-core +svn +doc +bash_completion +gitweb
Bütün ek paketleri kurmanız şart değil, ama Git’i Subversion yazılım havuzlarıyla kullanmanız gerekecekse en azından +svn’i edinmelisiniz.
Windows’ta Kurulum
Git’i Windows’da kurmak oldukça kolaydır. mysysGit projesi en basit kurulum yöntemlerinden birine sahip. Çalıştırılabilir kurulum dosyasını GitHub sayfasından indirip çalıştırmanız yeterli:
http://msysgit.github.com/
Kurulum tamamlandığında hem (daha sonra işe yarayacak olan SSH istemcisini de içeren) komut satırı nüshasına hem de standart kullanıcı arayüzüne sahip olacaksınız
Git Kullanımı
Git’i kurduğunuzda yapmanız gereken ilk şey adınızı ve e-posta adresinizi ayarlamaktır. Bunun önemli olmasının nedeni her bir Git kaydının bu bilgiyi kullanıyor olması ve bu bilgilerin dolaşıma soktuğunuz kayıtlara değişmez biçimde işlenmesidir.
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
Ayarlarınızı Gözden Geçirmek
Ayarlarınızı gözden geçirmek isterseniz, Git’in bulabildiği bütün ayarları listelemek için git config --list
komutunu kullanabilirsiniz.
Var olan Bir Klasörde Yazılım Havuzu Oluşturmak
Var olan bir projenizi sürüm kontrolü altına almak istiyorsanız, projenin bulunduğu klasöre gidip aşağıdaki komutu çalıştırmanız gerekir:
$ git init
Var olan dosyalarınızı sürüm kontrolüne almak istiyorsanız, o dosyaları hazırlayıp kayıt etmelisiniz. Bunu, sürüm kontrolüne almak istediğiniz dosyaları belirleyip kayıt altına aldığınız birkaç git komutuyla gerçekleştirebilirsiniz:
$ git add *.c
$ git add README
$ git commit -m 'projenin ilk hali'
Birazdan bu komutların üzerinde duracağız. Bu noktada, sürüm kontrolüne aldığınız dosyaları içeren bir Git yazılım havuzunuz var.
Var olan Bir Yazılım Havuzunu Klonlamak
Var olan bir Git yazılım havuzunu klonlamak istiyorsanız —söz gelimi, katkıda bulunmak istediğiniz bir proje varsa- ihtiyacınız olan komut git clone
. Subversion gibi başka SKS’lere aşinaysanız, komutun checkout
değil clone
olduğunu fark etmişsinizdir. Bu önemli bir ayrımdır —Git, sunucuda bulunan neredeyse bütün veriyi kopyalar. git clone
komutunu çalıştırdığınızda her dosyanın proje tarihçesinde bulunan her sürümü istemciye indirilir. Hatta, sunucunuzun diski bozulacak olsa, herhangi bir istemcideki herhangi bir klonu, sunucuyu klonlandığı zamanki haline geri getirmek için kullanabilirsiniz (sunucunuzdaki bazı çengel betikleri (hook) kaybedebilirsiniz, ama sürümlenmiş verinin tamamı elinizin altında olacaktır —daha fazla ayrıntı için bkz. 4. Bölüm)
Bir yazılım havuzu git clone [url]
komutuyla klonlanır. Örneğin, Grit adlı Ruby Git kütüphanesini klonlamak isterseniz, bunu şu şekilde yapabilirsiniz:
$ git clone git://github.com/schacon/grit.git
Bu komut grit
adında bir klasör oluşturur, bu klasörün içinde bir .git
alt dizini oluşturup ilklemesini yapar, söz konusu yazılım havuzunun bütün verisini indirir ve son sürümünün bir koyasını seçer (checkout). Bu yeni grit
klasörüne gidecek olursanız, kullanılmaya ve üzerinde çalışılmaya hazır proje dosyalarını görürsünüz. Yazılım havuzunu adı grit’ten farklı bir klasöre kopyalamak isterseniz, bunu komut satırı seçeneği olarak vermelisiniz:
$ git clone git://github.com/schacon/grit.git mygrit
Bu komut da bir öncekiyle aynı şeyleri yapar, fakat oluşturulan klasörün adı mygrit
‘tir.
Yeni Dosyaları İzlemeye Almak
Yeni bir dosyayı izlemeye almak için git add
komutunu kullanmalısınız. README dosyasını izlemeye almak için komutu şu şekilde çalıştırabilirsiniz:
$ git add README
status
komutunu yeniden çalıştırırsanız, README dosyasının artık izlemeye alındığını ve hazırlık alanında olduğunu göreceksiniz:
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: README
#
Hazırlık alanında olduğunu “Changes to be committed” başlığının altında olmasına bakarak söyleyebilirsiniz. Eğer bu noktada bir kayıt (commit) yapacak olursanız, dosyanın git add
komutunu çalıştırdığınız andaki hali bellek kopyasına kaydedilecektir. Daha önce git init
komutunu çalıştırdıktan sonra projenize dosya eklemek için git add (dosya)
komutunu çalıştırdığınızı hatırlayacaksınız —bunun amacı klasörünüzdeki dosyaları izlemeye almaktı. git add
komutu bir dosya ya da klasörün konumuyla çalışır; eğer söz konusu olan bir klasörse, klasördeki bütün dosyaları tekrarlamalı olarak projeye ekler.
Değiştirilen Dosyaları Hazırlamak
Gelin şimdi halihazırda izlenmekte olan bir dosyayı değiştirelim. İzlenmekte olan benchmarks.rb
adındaki bir dosyayı değiştirip status
komutunu çalıştırdığınızda şöyle bir ekran çıktısıyla karşılaşırsınız:
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: README
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
#
# modified: benchmarks.rb
#
benchmarks.rb
dosyası “Changes not staged for commit” başlıklı bir bölümün altında görünüyor —bu başlık izlenmekte olan bir dosyada değişiklik yapılmış olduğu fakat dosyanın henüz hazırlık alanına alınmadığı durumlarda kullanılır. Dosyayı hazırlamak için, git add
komutunu çalıştırın (git add
çok amaçlı bir komuttur, bir dosyayı izlemeye almak için, kayda hazırlamak için, ya da birleştirme uyuşmazlıklarının çözüldüğünü işaretlemek gibi başka amaçlarla kullanılır). Gelin benchmarks.rb
dosyasını kayda hazırlamak için git add
komutunu çalıştırıp sonra da git status
komutuyla duruma bakalım:
$ git add benchmarks.rb
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: README
# modified: benchmarks.rb
#
Her iki dosya da kayda hazırlanmış durumdadır ve bir sonraki kaydınıza dahil edilecektir. Tam da bu noktada, henüz kaydı gerçekleştirmeden, aklınıza benchmarks.rb
dosyasında yapmak istediğiniz küçük bir değişikliğin geldiğini düşünelim. Dosyayı yeniden açıp değişikliği yaptıktan sonra artık kaydı yapmaya hazırsınız. Fakat, git status
komutunu bir kez daha çalıştıralım:
$ vim benchmarks.rb
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: README
# modified: benchmarks.rb
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
#
# modified: benchmarks.rb
#
Ne oldu? benchmarks.rb
dosyası hem kayda hazırlanmış hem de kayda hazırlanmamış görünüyor. Bu nasıl olabiliyor? Git, bir dosyayı git add
komutunun alıştırıldığı haliyle kayda hazırlar. Eğer şimdi kayıt yapacak olursanız, benchmarks.rb
dosyası, çalışma klasöründe göründüğü haliyle değil, git add
komutunu son çalıştırdığınız haliyle kayıt edilecektir. Bir dosyayı git add
komutunu çalıştırdıktan sonra değiştirecek olursanız, dosyanın son halini kayda hazırlamak için git add
komutunu bir kez daha çalıştırmanız gerekir:
$ git add benchmarks.rb
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: README
# modified: benchmarks.rb
#