Kitap boyunca düzinelerce Git komutunu tanıttık ve bunları bir anlatı içerisinde tanıtmak için çok çalıştık, yavaş yavaş hikayeye daha fazla komut ekledik. Ancak bu bizi tüm kitap boyunca dağılmış halde komutların kullanım örnekleriyle karşı karşıya bırakıyor.
Bu ekte, kitap boyunca ele aldığımız tüm Git komutlarını kabaca ne için kullanıldıklarına göre gruplandırılmış olarak inceleyeceğiz. Her komutun genel olarak ne yaptığı hakkında konuşacağız ve sonra onu kullandığımızı kitabın neresinde bulabileceğinizi belirteceğiz.
Git’in ilk çağrılmasından, her gün yapılan yaygın ayarlamalara ve referanslara kadar, sıkça kullanılan iki komut vardır: config
ve help
komutları.
Git’e varsayılan olarak yüzlerce şeyi yaptırmanın bir yolu vardır. Bunların birçoğunu, Git’e bunları farklı bir şekilde varsayılan olarak yapmasını söyleyebilir veya tercihlerinizi ayarlayabilirsiniz. Bu, Git’e adınızın ne olduğunu söylemekten belirli terminal renk tercihlerine veya hangi düzenleyiciyi kullandığınıza kadar her şeyi içerir. Bu komutun okuyacağı ve yazacağı birkaç dosya vardır, böylece değerleri genel olarak veya belirli repolara göre ayarlayabilirsiniz.
Kitabın neredeyse her bölümünde git config
komutu kullanılmıştır.
ch01-introduction.asc bölümünde, Git’i kullanmaya başlamadan önce ismimizi, e-posta adresimizi ve editör tercihimizi belirtmek için kullandık.
ch02-git-basics.asc bölümünde, her seferinde bunları yazmak zorunda kalmamanız için, onu uzun seçenek dizilerine genişleyen kısa komutlar oluşturmak amacıyla nasıl kullanabileceğinizi gösterdik.
ch03-git-branching.asc bölümünde bunu, git pull
komutunu çalıştırdığınızda --rebase
'i varsayılan yapmak için kullandık.
ch07-git-tools.asc bölümünde, HTTP şifreleriniz için varsayılan bir repo oluşturmak için kullandık.
ch08-customizing-git.asc bölümünde Git’e giren ve çıkan içerik üzerinde smudge
ve clean
filtrelerinin nasıl ayarlanacağını gösterdik.
Son olarak, ch08-customizing-git.asc bölümünün, temel olarak tamamı bu komuta ayrılmıştır.
ch01-introduction.asc bölümünde Emacs ve Notepad++ için yapılandırma komutları örnek olarak gösterilmektedir. Diğer düzenleyiciler aşağıdaki gibi ayarlanabilir:
core.editor
yapılandırma komutlarının kapsamlı listesi
Editor | Yapılandırma komutu |
---|---|
Atom |
|
BBEdit (Mac, with command line tools) |
|
Gedit (Linux) |
|
Gvim (Windows 64-bit) |
|
Kate (Linux) |
|
nano |
|
Notepad (Windows 64-bit) |
|
Scratch (Linux) |
|
Sublime Text (macOS) |
|
Sublime Text (Windows 64-bit) |
|
Textmate |
|
Textpad (Windows 64-bit) |
|
Vim |
|
VS Code |
|
WordPad |
|
Note
|
Windows 64 bit sistemde 32 bit düzenleyiciniz varsa, program yukarıdaki tabloda olduğu gibi |
git help
komutu, Git ile birlikte herhangi bir komutla ilgili gönderilen tüm belgeleri size göstermek için kullanılır.
Bu ekte en popüler olanların çoğuna kaba bir genel bakış sunsak da, tüm olası seçeneklerin ve her komut için işaretlerin tam listesi için her zaman git help <command>
komutunu çalıştırabilirsiniz.
ch01-introduction.asc bölümünde git help
komutunu tanıttık ve ch04-git-on-the-server.asc bölümünde git shell
hakkında daha fazla bilgi bulmak için bu komutu nasıl kullanacağınızı gösterdik.
Bir Git reposunu oluşturmanın iki yolu vardır. Biri onu ağdaki veya başka bir yerdeki mevcut bir repodan kopyalamak, diğeri ise mevcut bir dizinde yeni bir tane oluşturmaktır.
Bir dizini alıp onu yeni bir Git reposuna dönüştürmek ve böylece onu sürüm kontrolüne başlatmak için git init
komutunu çalıştırmanız yeterlidir.
Bunu ilk olarak ch02-git-basics.asc bölümünde tanıttık, burada çalışmanız için yepyeni bir repo oluşturmayı gösterdik.
ch03-git-branching.asc bölümünde varsayılan dalı master
'dan nasıl değiştirebileceğinize kısaca değindik.
Bu komutu ch04-git-on-the-server.asc içindeki bir sunucu için boş bir çıplak/yalın repo oluşturmak için kullanırız.
Son olarak ch10-git-internals.asc bölümünde perde arkasında gerçekte neler gerçekleştiğinin bazı ayrıntılarını inceledik.
git clone
komutu aslında diğer birçok komutun etrafını saran bir şeydir.
Yeni bir dizin oluşturur, içine girer ve onu boş bir Git reposu haline getirmek için git init
komutunu çalıştırır, ilettiğiniz URL’ye (varsayılan olarak origin
olarak adlandırılır) bir uzaktan repo (git remote add
) ekler, çalıştırır, bu uzak depodan bir git fetch
alır ve ardından git checkout
ile çalışma dizininize yapılan en son işlemi kontrol eder.
Kitap boyunca onlarca yerde git clone
komutu kullanılıyor, ancak biz sadece birkaç ilginç yeri listeledik.
Temel olarak ch02-git-basics.asc bölümünde tanıtılmış ve açıklanmıştır; burada birkaç örneği inceledik.
ch04-git-on-the-server.asc bölümünde, çalışma dizini olmayan bir Git reposunun kopyasını oluşturmak için --bare
seçeneğini kullanmayı inceledik.
ch07-git-tools.asc bölümünde bunu paketlenmiş bir Git reposunu ayrıştırmak için kullandık.
Son olarak, ch07-git-tools.asc bölümünde alt modüllerle bir repoyu klonlamayı biraz daha basit hale getirmek için --recurse-submodules
seçeneğini öğrendik.
Kitap boyunca pek çok yerde kullanılmasına rağmen, bunlar biraz benzersiz olan veya biraz farklı şekillerde kullanıldığı yerlerdir.
İçeriği hazırlama ve geçmişinize kaydetme temel iş akışı için yalnızca birkaç temel komut vardır.
git add
komutu, bir sonraki işleme için çalışma dizinindeki içeriği izlem (stage) alanına (veya index
'e) ekler.
git commit
komutu çalıştırıldığında, varsayılan olarak yalnızca bu izlem alanına bakar, dolayısıyla git add
bir sonraki katkı pozunun tam olarak neye benzemesini istediğinizi oluşturmak için kullanılır.
Bu komut Git’te inanılmaz derecede önemli bir komuttur ve bu kitapta onlarca kez bahsedilmiş veya kullanılmıştır. Bulunabilecek benzersiz kullanımlardan bazılarını hızlı bir şekilde ele aldık.
İlk olarak ch02-git-basics.asc bölümünde git add
'i ayrıntılı olarak tanıtıyor ve açıklıyoruz.
ch03-git-branching.asc bölümünde birleştirme çakışmalarını çözmek için nasıl kullanılacağından bahsettik.
ch07-git-tools.asc bölümünde değiştirilmiş bir dosyanın yalnızca belirli bölümlerini etkileşimli olarak hazırlamak için kullanmaya devam edeceğiz.
Son olarak ch10-git-internals.asc bölümünde bunu düşük düzeyde taklit ediyoruz, böylece perde arkasında ne yaptığına dair bir fikir edinmenizi amaçladık.
git status
komutu size çalışma dizininizdeki ve hazırlama alanınızdaki dosyaların farklı durumlarını gösterecektir.
Hangi dosyaların değiştirildiği ve izleme alınmadığını, hangilerinin izlemlendiğini ancak henüz kaydedilmediği.
Normal haliyle, dosyaları bu durumlar arasında nasıl taşıyacağınız konusunda size bazı temel ipuçları da verir.
İlk olarak ch02-git-basics.asc bölümünde hem temel, hem de basitleştirilmiş formlarında status
'ı ele alıyoruz.
Kitap boyunca bunu kullansak da, git status
komutuyla yapabileceğiniz hemen hemen her şey burada ele alınmaktadır.
Herhangi iki ağaç arasındaki farkları görmek istediğinizde git diff
komutu kullanılır.
Bu, çalışma ortamınız ile izlem alanınız arasındaki fark (tek başına git diff
), izlem alanınız ile son katkınız arasındaki (git diff --staged
) veya iki katkı arasındaki fark (git diff master BranchB
) olabilir.
İlk olarak ch02-git-basics.asc bölümünde git diff
'in temel kullanımlarına baktık, burada hangi değişikliklerin izlemde olduğunu ve hangilerinin henüz izlemlenmediğini nasıl göreceğimizi anlattık.
ch05-distributed-git.asc bölümündeki --check
seçeneğiyle işlem yapmadan önce olası boşluk sorunlarını aramak için kullanırız.
ch05-distributed-git.asc bölümündeki git diff A…B
sözdizimi ile dallar arasındaki farkları nasıl daha etkili bir şekilde kontrol edebileceğimizi görüyoruz.
ch07-git-tools.asc bölümünde -b
ile boşluk farklarını filtrelemek ve çakışan dosyaların farklı aşamalarını --theirs
, --ours
ve --base
ile nasıl karşılaştıracağımızı görürüz.
Son olarak, ch07-git-tools.asc bölümündeki --submodule
ile alt modül değişikliklerini etkili bir şekilde karşılaştırmak için kullanıyoruz.
git difftool
komutu, yerleşik git diff
komutu dışında bir şey kullanmak istemeniz durumunda size iki ağaç arasındaki farkı gösterece,k harici bir aracı başlatır.
ch02-git-basics.asc bölümünde bundan çok kısaca bahsettik.
git commit
komutu, git add
ile hazırlanan tüm dosya içeriğini alır ve veritabanına yeni bir kalıcı poz kaydeder ve ardından geçerli daldaki dal işaretçisini ona doğru hareket ettirir.
İlk olarak ch02-git-basics.asc bölümünde katkı işlemenin temellerini ele aldık.
Burada ayrıca günlük iş akışlarında git add
adımını atlamak için -a
bayrağının nasıl kullanılacağını ve bir düzenleyiciyi başlatmak yerine komut satırına bir katkı mesajı iletmek için -m
bayrağının nasıl kullanılacağını da gösterdik.
ch02-git-basics.asc bölümünde, en son işlemi yeniden yapmak için --amend
seçeneğinin kullanımını ele aldık.
ch03-git-branching.asc bölümünde git commit
'in ne yaptığı ve bunu neden böyle yaptığı hakkında çok daha fazla ayrıntıya girdik.
ch07-git-tools.asc bölümünde katkıların kriptografik olarak -S
bayrağıyla nasıl imzalanacağına baktık.
Son olarak ch10-git-internals.asc bölümünde, git commit
komutunun arka planda ne yaptığına ve gerçekte nasıl uygulandığına bir göz attık.
git reset
komutu, muhtemelen fiilden de anlayabileceğiniz gibi, öncelikle işleri geri almak için kullanılır.
HEAD
işaretçisi etrafında hareket eder ve isteğe bağlı olarak index
'i veya izlem alanını (stage) değiştirir ve ayrıca --hard
bayrağını kullanırsanız, isteğe bağlı olarak çalışma dizinini de değiştirebilir.
Bu son seçenek, yanlış kullanıldığında bu komutun çalışmanızı kaybetmesine olanak tanır; bu nedenle kullanmadan önce sonuçlarını anladığınızdan emin olun.
Öncelikle ch02-git-basics.asc bölümünde git reset
'in en basit kullanımını etkili bir şekilde ele alıyoruz; burada onu, üzerinde git add
çalıştırdığımız bir dosyayı izlemden kaldırmak için kullandık.
Daha sonra tamamen bu komutu açıklamaya ayrılan ch07-git-tools.asc bölümünde, bunu oldukça ayrıntılı bir şekilde ele aldık.
ch07-git-tools.asc bölümünde bir birleştirme işlemini iptal etmek için git reset --hard
'ı kullandık; burada aynı zamanda git reset
için bir sarmalayıcı (wrapper) parçası olan git merge --abort
'u da kullandık.
git rm
komutu, dosyaları Git’in izlem alanından ve çalışma dizininden kaldırmak için kullanılır.
Bir sonraki katkıdan önce bir dosyanın izlemden kaldırılması açısından git add
'in tam zıttıdır.
ch02-git-basics.asc bölümünde, dosyaları yinelemeli olarak (alt dizinlerine inerek) kaldırmak ve dosyaları yalnızca izlem alanından kaldırmak, ancak bunları --cached
ile çalışma dizininde bırakmak da dahil olmak üzere, git rm
komutunu biraz ayrıntılı olarak ele aldık.
Kitapta git rm
'nin diğer tek farklı kullanımı ch10-git-internals.asc bölümündedir.
Burada git filter-branch
komutu çalıştırırken --ignore-unmatch
bayrağını kullanıp, açıkladık: bu bayrak kaldırmaya çalıştığımız dosya mevcut olmadığında, hata verilmemesini sağlar ve komut dosyası oluşturma amaçları için yararlı olabilir.
git mv
komutu, bir dosyayı taşımak ve ardından yeni dosyada git add
ve eski dosyada git rm
komutunu çalıştırmak için kullanılan, basit bir kolaylaştırma komutudur.
Bu komuttan yalnızca ch02-git-basics.asc bölümünde kısaca bahsettik.
git clean
komutu, istenmeyen dosyaları çalışma dizininizden kaldırmak için kullanılır.
Bu, geçici derleme yapıtlarının kaldırılmasını veya çakışma dosyalarının birleştirilmesini de içerebilir.
ch07-git-tools.asc bölümünde git clean
komutunu kullanabileceğiniz birçok seçeneği ve senaryoyu ele aldık.
Git’te dallanma ve birleştirme işlevlerinin çoğunu uygulayan yalnızca birkaç komut vardır.
git branch
komutu aslında bir tür dal yönetim aracıdır.
Sahip olduğunuz dalları listeleyebilir, yeni dal oluşturabilir, dalları silebilir ve dalların adını değiştirebilir.
ch03-git-branching.asc bölümünün çoğu git branch
komutuna ayrılmıştır ve tüm bölüm boyunca kullanılmıştır.
Bunu ilk olarak ch03-git-branching.asc bölümnde tanıttık ve diğer özelliklerinin çoğunu (listeleme ve silme) ch03-git-branching.asc bölümünde inceledik.
ch03-git-branching.asc bölümünde bir izleme dalı oluşturmak için git Branch -u
seçeneğini kullandık.
Son olarak ch10-git-internals.asc bölümünde arka planda yaptıklarından bazılarını inceledik.
git checkout
komutu, dalları değiştirmek ve içeriği çalışma dizininize aktarmak için kullanılır.
Komutla ilk olarak ch03-git-branching.asc bölümünde git Branch
komutuyla karşılaştık.
ch03-git-branching.asc bölümünde --track
bayrağının dalları izlemeye başlamak için nasıl kullanılacağını gördük.
ch07-git-tools.asc bölümünde --conflict=diff3
bayrağıyla dosya çakışmalarını yeniden ortaya çıkarmak için kullandık.
ch07-git-tools.asc bölümünde git reset
ile olan ilişkisini daha ayrıntılı olarak ele aldık.
Son olarak ch10-git-internals.asc bölümünde bazı uygulama ayrıntılarına girdik.
git merge
birleştirme aracı, bir veya daha fazla dalı üzerinde bulunduğunuz dalla birleştirmek için kullanılır.
Daha sonra mevcut dalınızı birleştirme sonucuna ilerletecektir.
git merge
komutu ilk olarak ch03-git-branching.asc bölümünde tanıtıldı.
Kitabın çeşitli yerlerinde kullanılmasına rağmen, git merge
komutunun çok az türü vardır - genellikle yalnızca birleştirmek istediğiniz tek dalın adını içeren git merge <branch>
sözdizimi.
ch05-distributed-git.asc bölümünün en sonunda sıkıştırılmış birleştirmenin (Git’in işi birleştirdiği ancak birleştirdiğiniz dalın geçmişini kaydetmeden, sadece yeni bir katkı işliyormuş gibi davrandığı) nasıl yapılacağını ele aldık.
ch07-git-tools.asc bölümünde sorunlu bir birleştirmeyi iptal etmek için -Xignore-space-change
komutu ve --abort
bayrağı da dahil olmak üzere, birleştirme işlemi ve komutu hakkında birçok şeyi gözden geçirdik.
Projeniz GPG oturum açmayı kullanıyorsa, birleştirmeden önce imzaları nasıl doğrulayacağımızı ch07-git-tools.asc bölümünde öğrendik.
Son olarak ch07-git-tools.asc bölümde alt-ağaçları birleştirmeyi öğrendik.
git mergetool
komutu, Git’te birleştirmeyle ilgili sorun yaşamanız durumunda harici bir birleştirme yardımcısını başlatır.
ch03-git-branching.asc bölümünde bundan kısa bir şekilde değinip ve ch08-customizing-git.asc bölümünde kendi harici birleştirme aracınızı nasıl uygulayacağınız konusunda ayrıntılara girdik.
git log
komutu, bir projenin ulaşılabilir kayıtlı geçmişini en son pozdan geriye doğru göstermek için kullanılır.
Varsayılan olarak yalnızca o anda bulunduğunuz dalın geçmişini gösterir, ancak temas edeceğiniz başka dalları ve hatta birden fazla başlık veya dalı argüman olarak verebilirsiniz.
Yine de genellikle iki veya daha fazla dal arasındaki farkları katkı düzeyinde göstermek için kullanılır.
Bu komut kitabın neredeyse her bölümünde bir projenin geçmişini göstermek için kullanıldı.
ch02-git-basics.asc bölümünde komutu tanıtıp, detaylı olarak ele alacağız.
Burada, her bir katkıda nelerin tanıtıldığı hakkında bir fikir edinmek için -p
ve --stat
seçeneğine ve geçmişi daha kısa bir şekilde görüntülemek için, bazı basit tarih ve yazar filtreleme seçenekleriyle birlikte --pretty
ve --oneline
seçeneklerine baktık.
ch03-git-branching.asc bölümünde, dal işaretçilerimizin nerede bulunduğunu kolayca görselleştirmek için bunu --decorate
seçeneğiyle birlikte ve ayrıca farklı geçmişlerin nasıl göründüğünü görmek için --graph
seçeneğiyle kullandık.
ch05-distributed-git.asc ve ch07-git-tools.asc bölümlerinde, hangi katkıların dala özel ve hangi dalla ilişkili olduğunu görmek için git log
komutunu kullanmak üzere branchA..branchB
sözdizimini ele aldık.
ch07-git-tools.asc bölümünde ise bunu oldukça kapsamlı bir şekilde inceledik.
ch07-git-tools.asc ve ch07-git-tools.asc bölümlerinde branchA…branchB
biçim ve --left-right
sözdizimini kullanarak, iki dalın birbirinden farkını görmeyi ele aldık.
ch07-git-tools.asc bölümünde, birleştirme çakışması yaşadığımızda hata ayıklamasına yardımcı olmak için --merge
ve --cc
seçeneklerinin nasıl kullanılacağına baktık.
ch07-git-tools.asc bölümnünde, git reflog
'u dal geçişi yerine, bu araç aracılığıyla görüntülemek için -g
seçeneğini kullandık.
ch07-git-tools.asc bölümünde, kodda tarihsel olarak meydana gelen bir şeyi (bir fonksiyonun geçmişini görmek gibi) bulmak için oldukça karmaşık aramalar yapmak üzere -S
ve -L
seçeneklerini kullanmayı öğrendik.
ch07-git-tools.asc bölümünde, git log
çıktısındaki her bir katkıyı geçerli bir şekilde imzalanıp imzalanmadığına bağlı olarak, bir doğrulama dizesi eklemek için --show-signature
komutunun nasıl kullanılacağımızı gördük.
git stash
komutu, bir dalda tamamlanmamış işleri bitirmek zorunda kalmadan, (çalışma dizininizi temizlemek amacıyla) kaydedilmemiş işleri geçici olarak depolamak için kullanılır.
Bu konu tamamen ch07-git-tools.asc bölümünde ele alınmıştır.
git tag
komutu, kod geçmişindeki belirli bir noktaya, kalıcı bir yer imi vermek için kullanılır.
Genellikle sürümleri etiketlemek gibi şeyler için kullanılır.
Bu komut ch02-git-basics.asc bölümünde tanıtılmış ve ayrıntılı olarak ele alınmıştır ve bunu pratik olarak ch05-distributed-git.asc bölümünde kullandık.
Ayrıca ch07-git-tools.asc bölümünde -s
bayrağıyla GPG imzalı bir etiketin nasıl oluşturulacağını ve -v
bayrağıyla nasıl doğrulanacağını da ele aldık.
Git’te ağa erişen çok fazla komut yoktur, komutların neredeyse tamamı yerel veritabanı üzerinde çalışır. Çalışmanızı paylaşmaya veya değişiklikleri başka bir yerden almaya hazır olduğunuzda, uzak repolarla ilgilenen birkaç komut vardır.
git fetch
komutu uzak bir repoyla iletişim kurar, o repoda bulunan ama sizin mevcut reponuzda olmayan tüm bilgileri getirir ve bunları yerel veritabanınızda saklar.
Bu komuta ilk olarak ch02-git-basics.asc bölümünde baktık ve kullanımına ilişkin örnekleri ch03-git-branching.asc bölümünde incelemeye devam ettik.
Bunu ayrıca ch05-distributed-git.asc bölümündeki örneklerin birçoğunda da kullandık.
Bunu ch06-github.asc bölümünde, varsayılan alanın dışındaki tek bir spesifik referansı getirmek için kullandık ve ch07-git-tools.asc bölümünde bir paketten nasıl getirileceğini gördük.
git fetch
'in ch10-git-internals.asc bölümündeki varsayılandan biraz farklı bir şey yapmasını sağlamak için çok özel refspec’ler ayarladık.
git pull
komutu temel olarak git fetch
ve git merge
komutlarının bir birleşimidir; burada Git, belirttiğiniz uzak repodan farklılıkları alır ve onu hemen bulunduğunuz dalla birleştirmeye çalışır.
Bunu hızlı bir şekilde ch02-git-basics.asc bölümünde tanıttık ve ch02-git-basics.asc bölümünde, komutu çalıştırdığınızda nelerin birleşeceğini nasıl göreceğinizi gösterdik.
Ayrıca ch03-git-branching.asc bölümünde yeniden temelleme zorluklarına yardımcı olmak için, onu nasıl kullanacağımızı da gösterdik.
ch05-distributed-git.asc bölümünde değişiklikleri tek seferlik bir şekilde almak için bunun bir URL ile nasıl kullanılacağını gösterdik.
Son olarak ch07-git-tools.asc bölümünde, çektiğiniz katkıların GPG imzalı olup olmadığını doğrulamak için --verify-signatures
seçeneğini kullanabileceğinizi belirttik.
git push
komutu başka bir repoyla iletişim kurmak, yerel veritabanınızın uzaktaki veritabanından farkını hesaplamak ve ardından aradıki farkı diğer repoya itmek için kullanılır.
Bu komut doğal olarak diğer repoya yazma erişimi gerektirir ve bu nedenle de bir kimlik doğrulaması yapılır.
İlk önce ch02-git-basics.asc bölümünde git Push
komutunu tanıttık.
Burada bir dalı uzak bir repoya göndermenin temellerini ele aldık.
ch03-git-branching.asc bölümünde belirli dallara itme konusunda biraz daha derinlere indik ve ch03-git-branching.asc bölümünde izlenen dalları otomatik olarak itme yapılacak şekilde nasıl ayarlayacağını gösterdik.
ch03-git-branching.asc bölümünde sunucudaki bir dalı silmek için git push
ile --delete
bayrağını kullandık.
ch05-distributed-git.asc boyunca, dallardaki çalışmayı birden fazla uzak repo aracılığıyla paylaşmak için git push
komutunu kullanmanın birkaç örneğini gösterdik.
ch02-git-basics.asc bölümünde --tags
seçeneğiyle oluşturduğunuz etiketleri paylaşmak için nasıl kullanılacağımızı anlattık.
ch07-git-tools.asc bölümünde, süper projeyi göndermeden önce tüm alt modül çalışmalarımızın yayınlandığını kontrol etmek için --recurse-submodules
seçeneğini kullandık ki alt modülleri kullanırken bu gerçekten yararlı olur.
ch08-customizing-git.asc bölümünde, bir itmeye izin verilmesi gerektiğini doğrulamak için bir itme tamamlanmadan önce çalıştırılacak şekilde ayarlayabileceğimiz bir komut dosyası olan `pre-push kancasından kısaca bahsettik.
Son olarak ch10-git-internals.asc bölümünde, normalde kullanılan genel kısayollar yerine tam bir refspec ile itme işlemine baktık. Bu, hangi çalışmayı paylaşmak istediğiniz konusunda çok spesifik davranabilmenize yardımcı olabilir.
git remote
komutu, uzak repolara ilişkin kayıtlarınız için bir yönetim aracıdır.
Uzun URL’leri origin
gibi kısaltılmış olarak kaydetmenize olanak tanır, böylece bunları her zaman yazmanıza gerek kalmaz.
Bunlardan birkaçına sahip olabilirsiniz ve bunları eklemek, değiştirmek ve silmek için git remote
komutu kullanılır.
Bu komut, listeleme, ekleme, kaldırma ve yeniden adlandırma da dahil olmak üzere ch02-git-basics.asc bölümünde ayrıntılı olarak ele alınmıştır.
Bu komut kitabın hemen hemen her bölümünde kullanılmakla birlikte, her zaman standart git remote add <isim> <link>
biçiminde yazılmıştır.
git archive
komutu, projenin belirli bir pozunun arşiv dosyasını oluşturmak için kullanılır.
git archive
komutunu ch05-distributed-git.asc bölümünde paylaşmak üzere olduğumuz bir projenin tarball’ını oluşturmak için kullandık.
git submodule
komutu normal bir repodaki harici repoları yönetmek için kullanılır.
Bu, kütüphaneler veya diğer türde paylaşılan kaynaklar için de olabilir.
git submodule
komutu, bu kaynakları yönetmek için çeşitli alt komutlara (add
, update
, sync
, vb) sahiptir.
Bu komuttan yalnızca ch07-git-tools.asc bölümünde bahsedilmiş ve tamamı anlatılmıştır.
git show
komutu bir Git nesnesini basit ve insanlar tarafından okunabilir bir şekilde gösterebilir.
Normalde bunu bir etiket veya taahkatkıhüt hakkındaki bilgileri göstermek için kullanırız.
Bunu ilk olarak ch02-git-basics.asc bölümünde, açıklamalı etiket bilgilerini göstermek için kullandık.
Daha sonra ch07-git-tools.asc bölümünde, biraz da çeşitli revizyon seçimlerimizin çözdüğü katıları göstermek için kullandık.
git show
ile yaptığımız en ilginç şeylerden biri, ch07-git-tools.asc bölümünde birleştirme çatışması sırasında çeşitli izlemleme aşamasındaki belirli dosya içeriklerini çıkarmakta kullanmaktı.
git shortlog
komutu, git log
çıktısını özetlemek için kullanılır.
git log
komutunun kullandığı seçeneklerin çoğunu alacaktır, ancak tüm katkıları listelemek yerine, yazara göre gruplandırılmış katkıların bir özetini sunacaktır.
ch05-distributed-git.asc bölümünde güzel bir değişiklik günlüğü oluşturmak için onu nasıl kullanacağımızı gösterdik.
git describe
komutu bir katkıya dönüştürülen her şeyi almak ve bir dereceye kadar insan tarafından okunabilen ve değişmeyecek bir dize üretmek için kullanılır.
Bu, SHA-1 katkısı kadar net ama daha anlaşılır bir katkının tanımını almanın bir yoludur.
Sürüm dosyamızı adlandıracak bir dize almak için ch05-distributed-git.asc ve ch05-distributed-git.asc bölümlerinde git describe
komutunu kullandık.
Git’te kodunuzdaki bir sorunun hatalarını ayıklamanıza yardımcı olacak birkaç komut bulunur. Bu, bir şeyin nerede tanıtıldığını bulmaktan onu kimin tanıttığını bulmaya kadar uzanır.
git bisect
aracı, otomatik ikilik arama yaparak bir hatayı veya sorunu ortaya çıkaran ilk katkının hangi spesifik katkı olduğunu bulmak için kullanılan, inanılmaz derecede yararlı bir hata ayıklama aracıdır.
Tamamen ch07-git-tools.asc bölümü kapsamındadır ve yalnızca burada bahsedilmişdir.
git blame
komutu, dosyanın her satırında değişiklik getiren son katkının işlendiği herhangi bir dosyanın satırlarına ve bu katkıyı kimin yazdığına açıklama ekler.
Bu, kodunuzun belirli bir bölümü hakkında daha fazla bilgi isteyecek kişiyi bulmak için faydalıdır.
Sadece ch07-git-tools.asc bölümünde bahsedilmektedir.
git grep
komutu, kaynak kodunuzdaki herhangi bir dosyada, hatta projenizin eski sürümlerinde herhangi bir dize veya normal ifadeyi bulmanıza yardımcı olabilir.
ch07-git-tools.asc kapsamındadır ve yalnızca bu bölümde bahsedilmektedir.
Git’teki birkaç komut, sanki katkı serisi bir dizi yamadan oluşuyormuşçasına, katkıların getirdikleri değişiklikler açısından düşünülmesi kavramı etrafında yoğunlaşmıştır. Bu komutlar dallarınızı bu şekilde yönetmenize yardımcı olur.
git cherry-pick
komutu, tek bir Git katkısında yapılan değişikliği almak ve bunu, o anda bulunduğunuz dalda yeni bir katkı olarak yeniden tanıtmayı denemek için kullanılır.
Bu komut, tüm değişiklikleri bulunduğunuz dalda birleşmek yerine, bir daldan yalnızca bir veya iki katkı almak zorunda kaldığınızda yararlı olabilir.
git cherry-pick
komutu ch05-distributed-git.asc bölümünde anlatılmıştır.
git rebase
komutu temelde otomatik bir git cherry-pick
komutudur.
Bir dizi katkı belirler ve ardından bunları başka bir yerde aynı sırayla tek tek işler.
Yeniden temellendirme (rebase) ch03-git-branching.asc bölümünde ayrıntılı olarak ele alınmakta olup, açık dallarda yeniden temellemeyle ilgili işbirliği konularına da yer verilmektedir.
Bunu pratikte, geçmişinizi ch07-git-tools.asc bölümünde --onto
bayrağını kullanarak iki ayrı repoya bölme örneği sırasında kullandık.
ch07-git-tools.asc bölümünde yeniden temellendirme sırasında bir birleştirme çatışması gösterdik.
Ayrıca ch07-git-tools.asc bölümünde -i
seçeneğiyle etkileşimli komut dosyası modunda da kullandık.
git revert
komutu aslında ters bir git cherry-pick
işlemidir.
Hedeflediğiniz katkıda yapılan değişikliğin tam tersini uygulayan, esasen onu geri alan veya geri döndüren yeni bir katkı oluşturur.
Bunu ch07-git-tools.asc bölümünde birleştirme işlemini geri almak için kullandık.
Git’in kendisi de dahil olmak üzere birçok Git projesi tamamen e-posta listeleri üzerinden sürdürülür. Git’te, kolayca e-postayla gönderebileceğiniz yamalar oluşturmaktan, bu yamaları bir e-posta kutusundan uygulamaya kadar, bu süreci kolaylaştırmaya yardımcı olan bir dizi yerleşik araç bulunur.
git apply
komutu, git diff
ve hatta GNU diff komutuyla oluşturulan bir yamayı uygular.
Bu, birkaç küçük farkla patch
komutunun yaptığına benzer.
Bunu kullanmayı ve bunu hangi durumlarda yapabileceğinizi ch05-distributed-git.asc bölümünde gösterdik.
git am
komutu, özellikle mbox biçimli bir e-posta yamalarını gelen kutusundan uygulamak için kullanılır.
Bu, yamaları e-postayla almak ve bunları projenize kolayca uygulamak için kullanışlıdır.
ch05-distributed-git.asc bölümünde --resolved
, -i
ve -3
seçenekleri de dahil olmak üzere git am
kullanımı ve iş akışını ele aldık.
Ayrıca git am
etrafındaki iş akışına yardımcı olmak için kullanabileceğiniz bir dizi kanca da vardır ve bunların hepsi ch08-customizing-git.asc bölümünde ele alınmıştır.
Ayrıca ch06-github.asc bölümünde yama biçimli GitHub Çekme İsteği değişikliklerini uygulamak için de kullandık.
git format-patch
komutu, mbox formatında ve uygun şekilde biçimlendirilmiş bir e-posta listesine göndermek için kullanabileceğiniz bir dizi yama oluşturmak için kullanılır.
ch05-distributed-git.asc bölümünde git format-patch
aracını kullanarak bir projeye katkıda bulunma örneğini inceledik.
git imap-send
komutu, git format-patch
ile oluşturulan bir e-posta kutusunu bir IMAP taslakları klasörüne yükler.
ch05-distributed-git.asc bölümündede git imap-send
aracıyla yamalar göndererek bir projeye katkıda bulunma örneğini inceledik
git send-email
komutu, git format-patch
ile oluşturulan yamaları e-postayla göndermek için kullanılır.
ch05-distributed-git.asc bölümünde git send-email
aracıyla yamalar göndererek bir projeye katkıda bulunma örneğini inceledik.
git request-pull
komutu basitçe birine e-postayla gönderilecek örnek bir mesaj gövdesi oluşturmak için kullanılır.
Genel bir sunucuda bir dalınız varsa ve yamaları e-postayla göndermeden bu değişiklikleri nasıl entegre edeceğini birine anlatmak istiyorsanız, bu komutu çalıştırabilir ve çıktıyı değişiklikleri almasını istediğiniz kişiye gönderebilirsiniz.
ch05-distributed-git.asc bölümünde bir çekme (Pull Request) mesajı oluşturmak için git request-pull
komutunun nasıl kullanılacağını gösterdik.
Git, diğer sürüm kontrol sistemleriyle entegre olmak için birkaç komutla birlikte gelir.
git svn
komutu Subversion sürüm kontrol sistemi ile istemci olarak iletişim kurmak için kullanılır.
Bu, bir Subversion sunucusuna bağlanmak ve katkı işlemek için Git’i kullanabileceğiniz anlamına gelir.
Bu komut ch09-git-and-other-systems.asc bölümünde ayrıntılı olarak ele alınmaktadır.
Diğer sürüm kontrol sistemleri veya hemen hemen her formattan içe aktarma için, diğer formatı Git’in kolayca kaydedebileceği bir şeye hızlı bir şekilde eşlemek için git fast-import
komutunu kullanabilirsiniz.
Bu komut ch09-git-and-other-systems.asc bölümünde ayrıntılı olarak ele alınmıştır.
Bir Git reposunu yönetiyorsanız veya bir şeyi büyük ölçüde düzeltmeniz gerekiyorsa, Git size yardımcı olacak bir dizi yönetim komutu sağlar.
git gc
komutu, deponuzda çöp toplayıcıyı (garbage collection) çalıştırarak veritabanınızdaki gereksiz dosyaları kaldırır ve kalan dosyaları daha verimli bir formatta paketler.
Bu komut normalde sizin için arka planda çalışır, ancak isterseniz manuel olarak da çalıştırabilirsiniz. Bunun bazı örneklerini ch10-git-internals.asc bölümünde inceledik.
git fsck
komutu, dahili veritabanını sorunlar veya tutarsızlıklara karşı kontrol etmek için kullanılır.
Bunu ch10-git-internals.asc bölümünde gevşek (dangling) nesneleri aramak için yalnızca bir kez hızlıca kullandık.
git reflog
komutu, siz geçmişleri yeniden yazarken kaybetmiş olabileceğiniz katkıları bulmaya çalışırken, dallarınızın uçlarının (HEAD) nerede olduğunun bir kaydını inceler.
Bu komutu temel olarak ch07-git-tools.asc bölümünde ele aldık; burada normal kullanımı ve aynı bilgiyi git log
çıktısıyla görüntülemek için git log -g
komutunun nasıl kullanılacağını gösterdik.
Ayrıca ch10-git-internals.asc bölümünde böyle kayıp bir dalın kurtarılmasına ilişkin pratik bir örneği de inceledik.
git filter-branch
komutu, bir dosyayı her yerden kaldırmak veya bir projeyi çıkarmak için tüm repoyu her bir alt dizine kadar filtrelemek gibi, çok sayıda işlemi belirli kalıplara göre yeniden yazmak için kullanılır.
ch07-git-tools.asc bölümünde komutu açıklayıp, --commit-filter
, --subdirectory-filter
ve --tree-filter
gibi birkaç farklı seçeneği inceledik.
ch09-git-and-other-systems.asc ve ch09-git-and-other-systems.asc bölümlerinde bunu içe aktarılan harici repoları düzeltmek için kullandık.
Ayrıca kitapta karşılaştığımız çok sayıda alt düzey tesisat komutları da vardı.
Karşılaştığımız ilk şey, sunucudaki ham referanslara bakmak için kullandığımız ch06-github.asc bölümündeki ls-remote
komutudur.
ch07-git-tools.asc, ch07-git-tools.asc ve ch07-git-tools.asc bölümlerinde ls-files
komutunu kullanarak izlem alanımızın daha ham bir görüntüsüne baktık.
Ayrıca ch07-git-tools.asc bölümünde rev-parse
komutundan bahsedip, hemen hemen her dizeyi alıp onu bir SHA-1 nesnesine dönüştürmek için kullandık.
Bununla birlikte, ele aldığımız düşük seviyeli tesisat komutlarının çoğu ch10-git-internals.asc bölümünde yer almaktadır. Bu bölümde tesisat komutlarına odaklandık ve kitabın geri kalanının mümkün mertebe bunları kullanmaktan kaçınmaya çalıştık.