-
1. BaÅlangıƧ
- 1.1 Sürüm Denetimi
- 1.2 Gitāin Kısa TarihƧesi
- 1.3 Git Nedir?
- 1.4 Komut Satırı
- 1.5 Gitāi Yüklemek
- 1.6 Gitāi İlk Defa Kurmak
- 1.7 Yardım Almak
- 1.8 Ćzet
-
2. Git Temelleri
-
3. Git Dalları
- 3.1 Dallar
- 3.2 Kısaca Dallandırma ve BirleÅtirme Temelleri
- 3.3 Dal Yƶnetimi
- 3.4 İŠAkıÅı Dallandırması
- 3.5 Uzak Dallar
- 3.6 Yeniden Temelleme (rebase)
- 3.7 Ćzet
-
4. Bir Sunucuda Git Kurma
-
5. DaÄıtık Git
-
6. GitHub
- 6.1 Bir Projeye Katkıda Bulunmak
- 6.2 Proje Bakımı
- 6.3 Kurumsal Yƶnetim
- 6.4 GitHubāı otomatikleÅtirme
- 6.5 Ćzet
-
7. Git AraƧları
- 7.1 Düzeltme Seçimi
- 7.2 EtkileÅimli İzlemleme (Staging)
- 7.3 Saklama ve Silme
- 7.4 ĆalıÅmanızı İmzalama
- 7.5 Arama
- 7.6 GeƧmiÅi Yeniden Yazma
- 7.7 Reset Komutunun Gizemleri
- 7.8 İleri Seviye BirleÅtirme
- 7.9 Rerere
- 7.10 Gitāle Hata Ayıklama
- 7.11 Alt Modüller
- 7.12 Demetleme (Bundling)
- 7.13 Git Nesnesini DeÄiÅtirme
- 7.14 Kimlik Bilgisi Depolama
- 7.15 Ćzet
-
8. Gitāi ĆzelleÅtirmek
-
9. Git ve DiÄer Sistemler
- 9.1 İstemci Olarak Git
- 9.2 Gitāe GeƧiÅ
- 9.3 Ćzet
-
10. Dahili Git Ćgeleri
- 10.1 Tesisat ve DƶÅeme (Plumbing ve Porcelain)
- 10.2 Git Nesneleri
- 10.3 Git Referansları
- 10.4 Packfiles
- 10.5 Refspec
- 10.6 Transfer Protokolleri
- 10.7 Bakım ve Veri Kurtarma
- 10.8 Ortam DeÄiÅkenleri
- 10.9 Ćzet
-
A1. Ek bƶlüm A: DiÄer Ortamlarda Git
- A1.1 Görsel Arayüzler
- A1.2 Visual Studio ile Git
- A1.3 Visual Studio Code ile Git
- A1.4 Eclipse ile Git
- A1.5 Sublime Text ile Git
- A1.6 Bash ile Git
- A1.7 Zsh ile Git
- A1.8 PowerShell ile Git
- A1.9 Ćzet
-
A2. Ek bƶlüm B: Gitāi Uygulamalarınıza Gƶmmek
- A2.1 Git Komut Satırı
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Ek bölüm C: Git Komutları
- A3.1 Kurulum ve Yapılandırma Komutları
- A3.2 Proje OluÅturma Komutları
- A3.3 Kısaca Poz (Snapshot) Alma
- A3.4 Dallandırma ve BirleÅtirme Komutları
- A3.5 Projeleri PaylaÅma ve Güncelleme Komutları
- A3.6 İnceleme ve KarÅılaÅtırma Komutları
- A3.7 Hata Ayıklama (Debugging) Komutları
- A3.8 Yamalama (Patching)
- A3.9 E-Posta Komutları
- A3.10 Harici Sistemler
- A3.11 Yƶnetim
- A3.12 Tesisat (Plumbing) Komutları
2.6 Git Temelleri - Etiketleme
Etiketleme
ĆoÄu VCS gibi Git de bir reponun geƧmiÅindeki belirli noktaları "ƶnemli" Åeklinde etiketleme (tagging) yeteneÄine sahiptir.
Genellikle geliÅtiriciler bu iÅlevi her bir sürümü (v1.0
, v2.0
vb.) iÅaretlemek iƧin kullanır.
Bu bƶlümde mevcut etiketlerin nasıl listeleneceÄini, etiketlerin nasıl oluÅturulacaÄını ve silineceÄini ve farklı etiket türlerinin neler olduÄunu ƶÄreneceksiniz.
Etiketlerinizi Listeleme
Gitāte mevcut etiketleri listelemek Ƨok basittir.
Sadece git tag
(isterseniz -l
veya --list
seƧenekleriyle) yazmanız yeterlidir:
$ git tag
v1.0
v2.0
Bu komut, etiketleri alfabetik sıraya göre listeler ama görüntülenme sırasının aslında bir önemi yoktur.
Ayrıca belli kalıplarla eÅleÅen etiketleri de arayabilirsiniz. ĆrneÄin Git kaynak reposu 500āden fazla etiket iƧerir. EÄer sadece 1.8.5 serisine bakmak istiyorsanız Åunu ƧalıÅtırabilirsiniz:
$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2
v1.8.5-rc3
v1.8.5.1
v1.8.5.2
v1.8.5.3
v1.8.5.4
v1.8.5.5
Not
|
Joker etiket karakterlerini listelemek
-l veya --list gerektirirEÄer tüm etiketlerin toplu bir listesini istiyorsanız Ancak etiket adlarıyla eÅleÅtirmek üzere bir karakter deseni yazacaksanız, |
Etiket OluÅturma
Git, iki ƧeÅit etiketi destekler: lightweight (hafif) ve annotated (aƧıklamalı).
Hafif bir etiket, deÄiÅmeyen bir Git dalı gibidir; yalnızca belirli bir katkının iÅaretƧisidir.
Ancak aƧıklamalı etiketler Git veritabanında tam nesneler olarak depolanır. Bunlar saÄlamalı (checksummed) verilerdir. Etiketi koyan kiÅinin adını, e-postasını ve etiketleme tarihini iƧerir, etiketleme mesajınız yer alır ve GNU Privacy Guard (GPG) ile imzalanıp, doÄrulanabilir. Tüm bu bilgilere sahip olabilmeniz iƧin genellikle aƧıklamalı etiketler oluÅturmanız ƶnerilir, ancak geƧici bir etiket istiyorsanız veya herhangi bir nedenle diÄer bilgileri saklamak istemiyorsanız, hafif etiketler de mevcuttur.
AƧıklamalı Etiketler
Gitāte aƧıklamalı bir etiket oluÅturmak basittir.
En kolay yol, tag
komutunu ƧalıÅtırdıÄınızda -a
(annotated) bayraÄı da belirtmektir:
$ git tag -a v1.4 -m "my version 1.4"
$ git tag
v0.1
v1.3
v1.4
-m
(message) bayraÄı etiketle birlikte saklanan bir etiketleme mesajı belirtir.
EÄer bu etiket iƧin bir mesaj belirtmezseniz Git, mesajı yazabilmeniz iƧin otomatik olarak düzenleyicinizi baÅlatır.
Etiket verilerini git show
komutunu kullanarak etiketlediÄiniz katkıyla birlikte gƶrebilirsiniz:
$ git show v1.4
tag v1.4
Tagger: Ben Straub <ben@straub.cc>
Date: Sat May 3 20:19:12 2014 -0700
my version 1.4
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
Bu katkı bilgisini gƶstermeden ƶnce etiketleme bilgisini, etiketleme tarihini ve aƧıklama mesajını gƶsterir.
Hafif Etiketler
Katkıları etiketlemenin baÅka bir yolu da hafif (lightweight) etiketler kullanmaktır.
Bu metodda "katkı saÄlaması" dıÅında hiƧbir veri saklanmaz.
Hafif etiket oluÅturmak iƧin -a
, -s
veya -m
seƧeneklerinden hiƧbirini kullanmaksızın sadece bir etiket adı yazarsınız:
$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5
Bu sefer etiket üzerinde git show
komutunu ƧalıÅtırırsanız ekstra etiket bilgilerini gƶremezsiniz.
Komut sadece katkıyı gƶsterir:
$ git show v1.4-lw
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
Sonradan Etiketleme
Katkıları, iÅledikten sonra da etiketleyebilirsiniz. Katkı geƧmiÅinizin Åƶyle gƶründüÄünü varsayalım:
$ git log --pretty=oneline
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme
Åimdi, projeyi ``updated rakefile`` katkısını iÅlerken "v1.2" Åeklinde etiketlemeyi unuttuÄunuzu varsayalım. Bunu sonradan da ekleyebilirsiniz. Bu katkıyı etiketlemek iƧin, komutun sonunda katkı saÄlamasının (checksum) tamamını veya bir kısmını belirtirsiniz:
$ git tag -a v1.2 9fceb02
Artık katkıyı etiketlediÄinizi gƶrebilirsiniz:
$ git tag
v0.1
v1.2
v1.3
v1.4
v1.4-lw
v1.5
$ git show v1.2
tag v1.2
Tagger: Scott Chacon <schacon@gee-mail.com>
Date: Mon Feb 9 15:32:16 2009 -0800
version 1.2
commit 9fceb02d0ae598e95dc970b74767f19372d61af8
Author: Magnus Chacon <mchacon@gee-mail.com>
Date: Sun Apr 27 20:43:35 2008 -0700
updated rakefile
...
Etiketleri PaylaÅma
Varsayılan olarak git push
komutu, etiketleri uzak sunuculara aktarmaz.
Etiketleri oluÅturduktan sonra paylaÅıma aƧık bir sunucuya (shared server) gƶndermeniz gerekecektir.
Bu süreƧ tıpkı uzak dalları paylaÅmaya benzer: git push origin <tagname>
komutunu ƧalıÅtırabilirsiniz (tagname: etiket adı).
$ git push origin v1.5
Counting objects: 14, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (14/14), 2.05 KiB | 0 bytes/s, done.
Total 14 (delta 3), reused 0 (delta 0)
To git@github.com:schacon/simplegit.git
* [new tag] v1.5 -> v1.5
Aynı anda gƶndermek istediÄiniz Ƨok sayıda etiketiniz varsa, git push
komutunun yerine --tags
seƧeneÄini de kullanabilirsiniz.
Bu, tüm etiketlerinizi, halihazırda orada olmayan uzak sunucuya aktaracaktır.
$ git push origin --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 160 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:schacon/simplegit.git
* [new tag] v1.4 -> v1.4
* [new tag] v1.4-lw -> v1.4-lw
Artık baÅka biri reponuzu kopyaladıÄında veya reponuzdan bilgi aldıÄında tüm etiketlerinizi de alacaktır.
Not
|
git push her iki türde etiketi de iterEtiketleri |
Etiketleri Silme
Yerel reponuzdaki bir etiketi silmek iƧin git tag -d <tagname>
komutunu kullanabilirsiniz (tagname: etiket adı).
ĆrneÄin yukarıdaki hafif etiketimizi Åu Åekilde kaldırabiliriz:
$ git tag -d v1.4-lw
Deleted tag 'v1.4-lw' (was e7d5add)
Bunun, etiketi herhangi bir uzak sunucudan kaldırmadıÄını unutmayın. Uzak sunucudan etiket silmenin iki yaygın ƧeÅidi vardır.
İlk yƶntem git push <remote> :refs/tags/<tagname>
komutudur (remote: uzak sunucu adı, tagname: etiket adı):
$ git push origin :refs/tags/v1.4-lw
To /git@github.com:schacon/simplegit.git
- [deleted] v1.4-lw
Aslında yaptıÄımız Åey: uzak sunucudaki etiket adının üstüne boÅ (null) bir deÄer yazmaktır (":" dan ƶnceki boÅluÄa dikkat edin). Bƶylece eski etiket silinecektir.
Uzak etiketi silmenin ikinci (ve daha sezgisel) yolu ise --delete <tagname>
kullanmaktır (tagname: etiket adı):
$ git push origin --delete <tagname>
Etiketleri Denetlemek
Bir etiketin iÅaret ettiÄi sürümleri gƶrüntülemek istiyorsanız, bu etiketi git checkout
komutuyla kontrol edebilirsiniz.
Ancak bunu yapmak reponuzu ``detached HEAD`` (ayrık uƧ) durumuna sokar ve bu da bazı olumsuz yan etkilere neden olur:
$ git checkout 2.0.0
Note: checking out '2.0.0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch>
HEAD is now at 99ada87... Merge pull request #89 from schacon/appendix-final
$ git checkout 2.0-beta-0.1
Previous HEAD position was 99ada87... Merge pull request #89 from schacon/appendix-final
HEAD is now at df3f601... add atlas.json and cover image
Normalde her bir dalda bir uƧ (HEAD) bulunur ve bu uƧ en son katkıya iliÅtirilmiÅtir. ``detached HEAD`` durumundayken bu uƧ en son katkı yerine etikete sabitlendiÄinden, yeni bir katkı iÅleseniz bile katkıniz hiƧbir dala ait olmayacaÄı iƧin "katkı karması" (hash) dıÅında eriÅilemez olacaktır. Bu nedenle, deÄiÅiklik yapmanız gerekiyorsa (mesela eski bir sürümdeki bir hatayı düzelttiniz) yeni bir dal oluÅturmanız gerekecektir:
$ git checkout -b version2 v2.0.0
Switched to a new branch 'version2'
Bunu yapıp bir katkı iÅlerseniz, "version2" dalınız, yeni deÄiÅikliklerinizle ilerleyeceÄi iƧin "v2.0.0" etiketinizden biraz farklı olacaktır. Bu yüzden dikkatli olun.