-
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 Basics
-
3. Git Branching
- 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 Summary
-
4. Git on the Server
- 4.1 İletişim Kuralları (Protocols)
- 4.2 Bir Sunucuda Git Kurma
- 4.3 SSH Ortak Anahtarınızı Oluşturma
- 4.4 Sunucu Kurma
- 4.5 Git Cini (Daemon)
- 4.6 Akıllı HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Üçüncü Taraf Barındırma (Hosting) Seçenekleri
- 4.10 Summary
-
5. Distributed Git
- 5.1 Dağıtık İş Akışları
- 5.2 Projenin Gelişiminde Rol Almak
- 5.3 Bir Projeyi Yürütme
- 5.4 Summary
-
6. GitHub
-
7. Git Tools
- 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 Submodules
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Summary
-
8. Customizing Git
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Summary
-
9. Git and Other Systems
- 9.1 Git as a Client
- 9.2 Migrating to Git
- 9.3 Summary
-
10. Git Internals
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Summary
-
A1. Ek bölüm A: Git in Other Environments
- A1.1 Graphical Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Visual Studio Code
- A1.4 Git in Eclipse
- A1.5 Git in Sublime Text
- A1.6 Git in Bash
- A1.7 Git in Zsh
- A1.8 Git in PowerShell
- A1.9 Summary
-
A2. Ek bölüm B: Embedding Git in your Applications
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Ek bölüm C: Git Commands
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
A3.4 Ek bölüm C: Git Commands - Branching and Merging
Branching and Merging
There are just a handful of commands that implement most of the branching and merging functionality in Git.
git branch
The git branch
command is actually something of a branch management tool.
It can list the branches you have, create a new branch, delete branches and rename branches.
Most of Git Branching is dedicated to the branch
command and it’s used throughout the entire chapter.
We first introduce it in Yeni bir Dal Açma and we go through most of its other features (listing and deleting) in Dal Yönetimi.
In Dalları Takip we use the git branch -u
option to set up a tracking branch.
Finally, we go through some of what it does in the background in Git References.
git checkout
The git checkout
command is used to switch branches and check content out into your working directory.
We first encounter the command in Dallararası Geçiş along with the git branch
command.
We see how to use it to start tracking branches with the --track
flag in Dalları Takip.
We use it to reintroduce file conflicts with --conflict=diff3
in Çakışmaları Kontrol Etme.
We go into closer detail on its relationship with git reset
in Reset Komutunun Gizemleri.
Finally, we go into some implementation detail in The HEAD.
git merge
The git merge
tool is used to merge one or more branches into the branch you have checked out.
It will then advance the current branch to the result of the merge.
The git merge
command was first introduced in Dallandırma.
Though it is used in various places in the book, there are very few variations of the merge
command — generally just git merge <branch>
with the name of the single branch you want to merge in.
We covered how to do a squashed merge (where Git merges the work but pretends like it’s just a new commit without recording the history of the branch you’re merging in) at the very end of Çatallanmış Açık Projeler.
We went over a lot about the merge process and command, including the -Xignore-space-change
command and the --abort
flag to abort a problem merge in İleri Seviye Birleştirme.
We learned how to verify signatures before merging if your project is using GPG signing in Katkıları İmzalama.
Finally, we learned about Subtree merging in Subtree Merging.
git mergetool
The git mergetool
command simply launches an external merge helper in case you have issues with a merge in Git.
We mention it quickly in Birleştirme Çakışması (merge conflict) and go into detail on how to implement your own external merge tool in External Merge and Diff Tools.
git log
The git log
command is used to show the reachable recorded history of a project from the most recent commit snapshot backwards.
By default it will only show the history of the branch you’re currently on, but can be given different or even multiple heads or branches from which to traverse.
It is also often used to show differences between two or more branches at the commit level.
This command is used in nearly every chapter of the book to demonstrate the history of a project.
We introduce the command and cover it in some depth in Katkı Geçmişini Görüntüleme.
There we look at the -p
and --stat
option to get an idea of what was introduced in each commit and the --pretty
and --oneline
options to view the history more concisely, along with some simple date and author filtering options.
In Yeni bir Dal Açma we use it with the --decorate
option to easily visualize where our branch pointers are located and we also use the --graph
option to see what divergent histories look like.
In Küçük Özel Ekipler and Katkı Aralığı we cover the branchA..branchB
syntax to use the git log
command to see what commits are unique to a branch relative to another branch.
In Katkı Aralığı we go through this fairly extensively.
In Merge Günlüğü and Üçlü Nokta (…) we cover using the branchA...branchB
format and the --left-right
syntax to see what is in one branch or the other but not in both.
In Merge Günlüğü we also look at how to use the --merge
option to help with merge conflict debugging as well as using the --cc
option to look at merge commit conflicts in your history.
In Referans Günlüğü (Reflog) Kısa Adları we use the -g
option to view the Git reflog through this tool instead of doing branch traversal.
In Arama we look at using the -S
and -L
options to do fairly sophisticated searches for something that happened historically in the code such as seeing the history of a function.
In Katkıları İmzalama we see how to use --show-signature
to add a validation string to each commit in the git log
output based on if it was validly signed or not.
git stash
The git stash
command is used to temporarily store uncommitted work in order to clean out your working directory without having to commit unfinished work on a branch.
This is basically entirely covered in Saklama ve Silme.
git tag
The git tag
command is used to give a permanent bookmark to a specific point in the code history.
Generally this is used for things like releases.
This command is introduced and covered in detail in Etiketleme and we use it in practice in Sürümü Etiketlemek.
We also cover how to create a GPG signed tag with the -s
flag and verify one with the -v
flag in Çalışmanızı İmzalama.