Skip to content

Checkout

İlk commit’lerimizi atarak repository’mizde iki düğümlü bir değişiklik ağacı oluşturduk.

$ git log --graph
* commit 777f68a6ba056e0bdfd674c3f8646ea2f9b04520 (HEAD -> main)
| Author: <username> <email>
| Date:   Fri May 2 21:49:04 2025 +0200
| 
|     Dosyaya Merhaba Dunya ekledim
| 
* commit 95e7356f75c2d844d9d1d7ba42fd5b40a5fd5ecf
  Author: <username> <email>
  Date:   Fri May 2 21:49:02 2025 +0200

      Ilk commit

Burada sıralanan her düğüm aslında repository’mizin o commit’in atıldığı andaki yapısını bire bir içermektedir. Diğer bir deyişle bu commit’lerin her biri repository’mizin o andaki bir kopyasını temsil etmektedir. Repository’mizde yapılan her değişiklik üzerine repository’mizin son hâlini elle yedeklemek yerine bir commit atarak kayıt altına alıyoruz.

Bir kopyadan diğerine, veya diğer bir deyiş ile bir commit’ten diğerine geçerek dosyaları incelemek istersek checkout komutunu kullanabiliriz. Örneğin bir önceki commit’imiz olan 95e7356f75c2d844d9d1d7ba42fd5b40a5fd5ecf hash’li commit’e şu şekilde dönebiliriz:

Daha kısa hash

Bir git commit’inin hash’i 40 karakterden oluşuyor. Ancak git ile çalışırken sürekli 40 karakterin tamamını girmek çok verimli bir yöntem değil. Bunun yerine genellikle ilk 7 karakteri girmeniz yeterli oluyor.

Kısa Hash’i Çakışan Commit’ler

Bir repository’de ilk 7 karakteri aynı olan iki commit’in denk gelme ihtimali \(16^7 = 268,\!435,\!456\)’dır. Dolayısıyla bu ihtimal oldukça düşük. Bunun yaşandığı durumda çalıştırdığınız git komutu hata atacaktır.

$ git checkout 95e7356
Note: switching to '95e7356'.

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 switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 95e7356 Ilk commit

Note

Burada git’in bize verdiği uyarıların ve detached HEAD teriminin ne anlama geldiğinin ilerleyen zamanlarda edindiğimiz bilgiler ışığında tekrar üzerinden geçeceğiz.

Son satırdaki HEAD is now at 95e7356 Ilk commit çıktısı ile birlikte repository’mizin o commit’teki kopyasına başarı ile döndüğünü görüyoruz. Şimdi test.txt dosyasının içeriğine bakarsak o andaki hâline döndüğünü göreceğiz.

$ cat test.txt
Hello world

git checkout main komutuyla repository’mizi eski hâline alarak ile kaldığımız yerden devam edelim.