# Git Revert

Adres: https://softwaredictionary.org/tr/terimler/git-revert
Kategori: Sürüm Kontrolü
Son güncelleme: 2026-09-30
Okunuşu: git rivört

Kısaca: Git revert, önceki bir commit'i, tersi değişiklikleri içeren yeni bir commit oluşturarak geri alan, mevcut proje geçmişini olduğu gibi bırakan Git komutudur.

## git revert nedir?

`git revert`, zaten paylaşılmış bir commit'i geri almanın güvenli yoludur. Git commit'i silmek yerine, değişikliklerinin tam tersini hesaplar (eklediği satırlar kaldırılır, kaldırdığı satırlar geri gelir) ve bunu yepyeni bir commit olarak kaydeder. Özgün commit geçmişte kalır ve ardından mesajı 'Revert' ile başlayan bir commit gelir.

Geri alınacak commit'in hash'ini `git revert a1b2c3d` örneğindeki gibi verirsiniz; Git mesaj için bir editör açar ya da `--no-edit` eklerseniz varsayılan mesajı kullanır. Daha önce yayımlanmış hiçbir şey yeniden yazılmadığı için ekip arkadaşları revert'i diğer commit'ler gibi pull eder; bu da `main` ya da bir release branch'inde kötü bir değişikliği geri çekmenin standart yoludur. Bir merge commit'i geri almak için, korunacak ana hattın hangi ebeveyn olduğunu Git'e söyleyen `-m 1` gerekir.

Geri almak, teslim edilmiş her nüshayı geri çağırmak yerine gazetede bir düzeltme yayımlamaya benzer: özgün makale kayıtta kalır ve düzeltme neyin değiştiğini açıklar. Geri alınan satırlara sonraki commit'ler de dokunmuşsa Git bir çakışma bildirebilir; bunu her zamanki gibi çözer ve `git revert --continue` ile tamamlarsınız.

En yaygın karışıklık `git revert` ile `git reset` arasındadır. Reset bir branch'i geri taşır ve sonraki commit'lerin ondan kaybolmasına yol açar; bu geçmişi yeniden yazar ve commit'ler push edilmişse başkalarının kopyalarını bozar. Revert ise yalnızca yeni bir commit ekler. Revert ayrıca bir dağıtım rollback'inden de daha dardır: rollback önceki bir sürümü yeniden canlıya alır, revert ise kodun kendisini değiştirir ve ekipler çoğu zaman ikisini birden yapar.

## Önemli noktalar

- `git revert <hash>`, önceki bir commit'in değişikliklerini tersine çeviren yeni bir commit oluşturur.
- Geçmiş yeniden yazılmaz; bu yüzden `main` gibi paylaşılan branch'lerde kullanmak güvenlidir.
- Bir merge commit'i geri almak için hangi ebeveynin korunacağını seçen `-m 1` gerekir.
- Çakışmalar her zamanki gibi çözülür ve `git revert --continue` ile tamamlanır.
- Push edilmemiş yerel commit'ler için `git reset`, yayımlanmış olanlar için `git revert` kullanın.

## Örnek: Kötü bir commit'i güvenle geri çekmek

```bash
# Find the commit that introduced the problem
git log --oneline
# 9f8e7d6 Add discount banner
# a1b2c3d Change checkout validation   <- this one broke checkout

# Create a new commit that undoes it, using the default message
git revert --no-edit a1b2c3d

# Undo a merge commit, keeping the first parent (usually main)
git revert -m 1 4d5e6f7

# Share the fix like any other commit
git push
```

## Sık sorulan sorular

**git revert ile git reset arasındaki fark nedir?**

`git revert`, ters değişikliklerden oluşan yeni bir commit ekleyerek bir commit'i geri alır; yani geçmiş yalnızca büyür. `git reset` ise bir branch'i daha eski bir commit'e geri taşır ve sonraki commit'leri atar; bu geçmişi yeniden yazar ve push etmediğiniz commit'lerle sınırlı tutulmalıdır.

**Birkaç commit'i aynı anda geri alabilir miyim?**

Evet. Birkaç hash ya da `A`'dan sonraki her commit'i `B` dahil olmak üzere kapsayan `git revert A..B` gibi bir aralık verin; Git her biri için bir revert commit'i oluşturur. Tüm geri almaları stage edip tek bir commit olarak kaydetmek için `--no-commit` ekleyin.

**Bir revert nasıl geri alınır?**

Revert commit'inin kendisini `git revert <revert-hash>` ile geri alın; bu, özgün değişiklikleri başka bir yeni commit olarak geri getirir. Temeldeki sorun giderildikten sonra bir değişikliği yeniden uygulamanın olağan yolu budur.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
