Git’te Çalışma Dizinini Değiştirmeden Yeni Bir Commit Nasıl Oluştururum?

Git, modern yazılım geliştirme dünyasında en popüler sürüm kontrol sistemlerinden biridir. Birçok geliştirici, değişiklikleri izlemek ve kodlarını yönetmek için Git’i kullanır. Ancak, bazen mevcut çalışma dizininde değişiklik yapmadan bir commit oluşturmanız gerekebilir. Bu yazıda, Git’te çalışma dizinini değiştirmeden yeni bir commit oluşturmanın yollarını inceleyeceğiz.

Git ve Commit Mantığı

Git’te bir commit, bir projedeki dosyaların belirli bir durumunu kaydeden bir anlık görüntüdür. Commit’ler, bir yazılım projesinin gelişimini izlemek için temel yapı taşlarıdır. Normalde, yeni bir commit oluşturmak için değişiklikler yapar, bunları git add komutuyla sahneye alır ve ardından git commit komutunu kullanırsınız. Ancak bazen çalışma dizinini etkileyen bir işlem yapmadan, doğrudan bir commit yaratmak isteyebilirsiniz.

Çalışma Dizinini Değiştirmeden Commit Oluşturmanın Nedenleri

Çalışma dizinini değiştirmeden commit oluşturmak isteyebileceğiniz bazı yaygın senaryolar şunlardır:

  • Manuel hataları düzeltmek: Geçmişte yapılmış bir commit’e ekleme yapmak isteyebilirsiniz.
  • Otomatik komut dosyaları: Belirli dosyalar üzerinde çalışan otomatik bir işlemde commit yapmak gerekebilir.
  • Başka bir branch’e geçiş yapmadan: Hangi branch üzerinde çalıştığınıza bakılmaksızın yeni bir commit oluşturmak isteyebilirsiniz.

Git’te Çalışma Dizinini Değiştirmeden Commit Oluşturma Yöntemleri

Şimdi, Git’te çalışma dizinini değiştirmeden yeni bir commit oluşturmanın farklı yöntemlerini adım adım inceleyelim.

1. git commit --amend Komutunu Kullanma

Git’te, önceki commit’e eklemeler yaparak yeni bir commit oluşturmak için git commit --amend komutunu kullanabilirsiniz. Bu komut, mevcut değişikliklerinizi birleştirerek tek bir commit haline getirir.

git commit --amend --no-edit

Bu komut, mevcut commit mesajını değiştirmeden yeni değişikliklerinizi mevcut commit’e ekler. Ancak unutmayın, bu işlem yalnızca en son commit üzerinde çalışır.

2. git commit --allow-empty Komutunu Kullanma

Eğer değişiklik yapmadan yeni bir commit oluşturmak istiyorsanız, git commit --allow-empty komutunu kullanabilirsiniz. Bu komut, çalışma dizininde değişiklik olmaksızın bir commit oluşturur.

git commit --allow-empty -m "Boş commit mesajı"

Bu yöntem, genellikle dummy commit’ler oluşturmak için kullanılır. Örneğin, bir pipeline’ı tetiklemek veya dokümantasyon amacıyla boş commit yapmak istediğinizde bu komut işe yarar.

3. git cherry-pick Komutunu Kullanma

Başka bir branch’den belirli commit’leri alıp mevcut branch’e eklemek istiyorsanız, git cherry-pick komutunu kullanabilirsiniz. Bu yöntem, çalışma dizinini değiştirmeden yeni commit’ler oluşturmanızı sağlar.

git cherry-pick 

Örneğin:

git cherry-pick abc123

Bu komut, abc123 hash’ine sahip commit’i alıp mevcut branch’inize uygular.

4. git stash ve git stash pop Kombinasyonu

Eğer mevcut değişikliklerinizi geçici olarak saklamak ve temiz bir çalışma dizininde commit yapmak istiyorsanız, git stash ve git stash pop komutlarını kullanabilirsiniz. Bu yöntem, çalışma dizinindeki değişikliklerinizi bozmadan yeni commit’ler yapmanıza olanak tanır.


git stash
git commit --allow-empty -m "Geçici commit"
git stash pop

Bu yaklaşım, karmaşık senaryolar için oldukça kullanışlıdır.

5. git reset ile Sahneleme Alanını Düzenleme

Eğer sadece sahnelenmiş değişiklikler üzerinde çalışıyorsanız, git reset komutunu kullanarak sahneleme alanını düzenleyebilir ve yeni commit oluşturabilirsiniz. Örneğin:


git reset --soft HEAD^
git commit -m "Yeni commit mesajı"

Bu komutlar, son commit’i geri alır ve değişiklikleri sahnelenmiş halde bırakır. Ardından, yeni bir commit mesajı ile yeniden commit yapabilirsiniz.

Hangi Yöntem Ne Zaman Kullanılmalı?

Her yöntemin kendine özgü avantajları ve kullanımı vardır:

  • git commit --amend: Geçmiş commit’lerde düzeltme yapmanız gerekiyorsa kullanılır.
  • git commit --allow-empty: Çalışma dizinini bozmadan dummy commit oluşturmak için idealdir.
  • git cherry-pick: Belirli commit’leri taşımak istediğinizde tercih edilir.
  • git stash ve git stash pop: Geçici değişikliklerle çalışıyorsanız önerilir.
  • git reset: Sahnelenmiş değişiklikler üzerinde çalışırken kullanılır.

Sonuç

Git’te çalışma dizinini değiştirmeden yeni bir commit oluşturmak, doğru araçları ve komutları kullanarak kolayca gerçekleştirilebilir. Yukarıda bahsedilen yöntemlerden hangisinin sizin senaryonuza uygun olduğunu belirleyerek, çalışma akışınızı optimize edebilirsiniz. Unutmayın, Git’in esnekliği sayesinde farklı durumlar için farklı çözümler bulabilirsiniz.

Bu yazıda bahsettiğimiz tekniklerle ilgili herhangi bir sorunuz varsa, lütfen yorum yapmaktan çekinmeyin. Git ile başarılı projeler dileriz!