Skip to content

Commit

Commit atabilmemiz için öncelikle repository içerisinde bir değişiklik yapmamız gerekli. Burada test.txt isminde bir dosya oluşturarak içerisine Hello world yazdırabiliriz.

$ echo "Hello world" > test.txt

Unix Bilgisi

echo komutu yazdığımız metni tekrar etmeye yarayan bir komuttur. Yukarıda ise echo'nun çıktısının > ile test.txt isminde bir dosyaya yönlendirilmesini sağladık. Bu dosya eğer ki yoksa otomatik olarak oluşturulmaktadır. Bu dosyanın içeriğini doğrulamak için cat test.txt komutunu çalıştırabilirsiniz.

Şimdi ise git yaptığımız değişikliği görebiliyor mu bunu git status ile kontrol edelim.

$ git status
On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    test.txt

nothing added to commit but untracked files present (use "git add" to track)

Burada görülebileceği üzere git oluşturduğumuz test.txt dosyasını Untracked files altında listelemiş durumda. Untracked aslında bu dosyanın henüz git tarafından repository veritabanına kaydedilmemiş olduğunu belirtmekte. Bu aşamada hâlâ bir commit atamıyoruz çünkü bu dosyayı henüz git'e, daha doğrusu git'in index'ine eklemedik. Gelin ekleyelim.

$ git add test.txt

$ git status
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
    new file:   test.txt

Eklediğimiz dosyanın new file olarak listelendiğini görebiliyoruz. Artık commit atmaya hazırız. Commit mesajımıza İlk commit yazarak ilk commit’imizi atabiliriz.

Commit Sahipliği

Bir git repository'sinde atılan commit’lerin bir sahibi olmak zorundadır. Biz henüz git'e kendi kullanıcı adı ve e-posta adresimizi tanıtmadık. Aşağıdaki komutlar ile git’in ayarlarına bunu eklemeyi unutmayalım.

$ git config --global user.name "<username>"
$ git config --global user.email "<email>"

$ git commit -m "Ilk commit"
[main (root-commit) 95e7356] Ilk commit
 1 file changed, 1 insertion(+)
 create mode 100644 test.txt

Artık ilk commit’imizi atmış durumdayız. Repository’mizin geçmişine bakarak bunu onaylayalım.

$ git log
commit 95e7356f75c2d844d9d1d7ba42fd5b40a5fd5ecf (HEAD -> main)
Author: <username> <email>
Date:   Fri May 2 21:49:02 2025 +0200

    Ilk commit

Artık repository’mizde hash’i 95e7356f75c2d844d9d1d7ba42fd5b40a5fd5ecf olan bir commit’imiz bulunmakta. Şimdi gelin minik bir değişiklik yapıp ikinci bir commit daha atalım. Bu sefer test.txt dosyasında ufak bir değişiklik yapalım.

$ echo "Merhaba Dunya" >> test.txt

$ git status
On branch main
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   test.txt

no changes added to commit (use "git add" and/or "git commit -a")

Unix Bilgisi

Bu sefer echo komutundan sonra > yerine >> operatörü kullanmamızın sebebi test.txt dosyasının içeriğinin üzerine yazmak yerine komutun çıktısının dosyanın sonuna eklenmesini istiyoruz. > operatörü dosyanın içeriğinin tamamını silerken >> operatörü sadece dosyanın sonuna ekleme yapmaktadır.

Gördüğünüz üzere bu sefer yaptığımız değişikliklere rağmen dosya Untracked olarak isimlendirilmiyor. Bunun sebebi ise bir önceki attığımız commit ile birlikte bu dosyanın mevcut durumda git’in index’inde zaten yer alıyor olması. Artık yaptığımız değişiklik modified olarak gözüküyor. Bu sefer dosyanın yeni hâlini git’in index’ine eklememiz gerekiyor.

$ git add test.txt

$ git status
On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    modified:   test.txt

Şimdi yeni bir commit atabiliriz.

$ git commit -m "Dosyaya Merhaba Dunya ekledim"
[main 777f68a] Dosyaya Merhaba Dunya ekledim
 1 file changed, 1 insertion(+)

Artık repository’mizin en son hâline bakabiliriz. Bu sefer git log komutumuza --graph bayrağını ekleyerek bakalım.

$ 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

Artık yeni bir commit’imiz var ve hash’i 777f68a6ba056e0bdfd674c3f8646ea2f9b04520 olarak oluşmuş. Ve bir önceki commit’e de bağlantısı * ve üzerindeki çizgiler ile gösterilmiş durumda. Eğer ki commit’lerin yaptığı değişiklikleri de burada görmek isterseniz log komutuna --patch bayrağını ekleyebilirsiniz.

$ git log --graph --patch
* commit 777f68a6ba056e0bdfd674c3f8646ea2f9b04520 (HEAD -> main)
| Author: <username> <email>
| Date:   Fri May 2 21:49:04 2025 +0200
| 
|     Dosyaya Merhaba Dunya ekledim
| 
| diff --git a/test.txt b/test.txt
| index 802992c..da9d8ba 100644
| --- a/test.txt
| +++ b/test.txt
| @@ -1 +1,2 @@
|  Hello world
| +Merhaba Dunya
| 
* commit 95e7356f75c2d844d9d1d7ba42fd5b40a5fd5ecf
  Author: <username> <email>
  Date:   Fri May 2 21:49:02 2025 +0200

      Ilk commit

  diff --git a/test.txt b/test.txt
  new file mode 100644
  index 0000000..802992c
  --- /dev/null
  +++ b/test.txt
  @@ -0,0 +1 @@
  +Hello world