Skip to content

Latest commit

 

History

History
566 lines (323 loc) · 38.1 KB

C-git-commands.asc

File metadata and controls

566 lines (323 loc) · 38.1 KB

Appendix A: Git Komutları

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.

Kurulum ve Yapılandırma Komutları

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 config

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.

git config core.editor Komutları

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:

Table 1. core.editor yapılandırma komutlarının kapsamlı listesi
Editor Yapılandırma komutu

Atom

git config --global core.editor "atom --wait"

BBEdit (Mac, with command line tools)

git config --global core.editor "bbedit -w"

Gedit (Linux)

git config --global core.editor "gedit --wait --new-window"

Gvim (Windows 64-bit)

git config --global core.editor "'C:/Program Files/Vim/vim72/gvim.exe' --nofork '%*'"

Kate (Linux)

git config --global core.editor "kate"

nano

git config --global core.editor "nano -w"

Notepad (Windows 64-bit)

git config core.editor notepad

Scratch (Linux)

git config --global core.editor "scratch-text-editor"

Sublime Text (macOS)

git config --global core.editor "/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl --new-window --wait"

Sublime Text (Windows 64-bit)

git config --global core.editor "'C:/Program Files/Sublime Text 3/sublime_text.exe' -w"

Textmate

git config --global core.editor "mate -w"

Textpad (Windows 64-bit)

git config --global core.editor "'C:/Program Files/TextPad 5/TextPad.exe' -m

Vim

git config --global core.editor "vim"

VS Code

git config --global core.editor "code --wait"

WordPad

git config --global core.editor '"C:\Program Files\Windows NT\Accessories\wordpad.exe"'"

Note

Windows 64 bit sistemde 32 bit düzenleyiciniz varsa, program yukarıdaki tabloda olduğu gibi C:\Program Files\ yerine C:\Program Files (x86)\ dizinine yüklenecektir.

git help

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.

Proje Oluşturma Komutları

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.

git init

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

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.

Kısaca Poz (Snapshot) Alma

İçeriği hazırlama ve geçmişinize kaydetme temel iş akışı için yalnızca birkaç temel komut vardır.

git add

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

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.

git diff

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

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

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

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

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

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

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.

Dallandırma ve Birleştirme Komutları

Git’te dallanma ve birleştirme işlevlerinin çoğunu uygulayan yalnızca birkaç komut vardır.

git branch

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

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

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

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

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

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

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.

Projeleri Paylaşma ve Güncelleme Komutları

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

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

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

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

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

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

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.

İnceleme ve Karşılaştırma Komutları

git show

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

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

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.

Hata Ayıklama (Debugging) Komutları

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

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

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

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.

Yamalama (Patching)

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

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

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

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.

E-Posta Komutları

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

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

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

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

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

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

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.

Harici Sistemler

Git, diğer sürüm kontrol sistemleriyle entegre olmak için birkaç komutla birlikte gelir.

git svn

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.

git fast-import

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.

Yönetim

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

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

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

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

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.

Tesisat (Plumbing) Komutları

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.