Git Revert
Son güncelleme
git revert, değişikliklerinin tersini uygulayan yeni bir commit oluşturarak bir commit'i geri alır. Geçmişi yeniden yazmak yerine geçmişe ekleme yaptığı için, revert zaten push edilmiş bir commit'i geri almanın güvenli yoludur - git reset'in aksine, herkesi yeniden yazılmış bir dalı uzlaştırmaya zorlamaz.
Bunları terminal playground'da deneyin - tarayıcınızda gerçek bir shell, kurulacak hiçbir şey yok.
Söz dizimi
| Command | What it does |
|---|---|
git revert HEAD | En son commit'i geri alır |
git revert <hash> | Belirli bir commit'i hash ile geri alır |
git revert HEAD~2..HEAD | Bir commit aralığını geri alır |
git revert -n <hash> | Geri alır ama henüz commit yapmaz (yalnızca hazırlar) |
git revert -m 1 <merge-hash> | Bir merge commit'ini, 1. ebeveyni koruyarak geri alır |
Revert sırasında
Revert bir çakışmaya rastlarsa, onu çözün ve devam edin.
| Command | What it does |
|---|---|
git revert --continue | Çakışmaları çözdükten sonra devam eder |
git revert --abort | Devam eden revert'i iptal eder |
git revert --skip | Mevcut commit'i atlar ve devam eder |
revert vs reset
| Behavior | git revert | git reset |
|---|---|---|
| Geçmişi yeniden yazar | Hayır | Evet |
| Push edilmiş commit'lerde güvenli | Evet | Hayır |
| Yeni bir commit oluşturur | Evet | Hayır |
| Ortadaki bir commit'i geri alır | Evet | Zahmetli |
git revert SSS
git revert ile git reset arasındaki fark nedir?
git revert, daha önceki bir commit'in değişikliklerini geri alan yeni bir commit ekler ve geçmişi olduğu gibi bırakır - zaten push ettiğiniz commit'ler için güvenlidir. git reset, dal işaretçinizi geriye taşır ve geçmişi yeniden yazar; bu, yerel commit'ler için sorun değildir ama paylaşılan dallarda tehlikelidir. Genel commit'leri geri almak için revert'i, yerel olanları geri almak için reset'i kullanın.Zaten push edilmiş bir commit'i nasıl geri alırım?
git revert <hash> (veya en sonuncusu için git revert HEAD) komutunu çalıştırın, ardından yeni revert commit'ini push edin. Revert geçmişi yeniden yazmadığı için, paylaşılan bir commit'i geri almanın doğru yolu budur - force-push yok ve onu zaten çekmiş olan ekip arkadaşları için hiçbir aksaklık yok.Bir merge commit'ini nasıl geri alırım?
Bir merge commit'inin iki ebeveyni vardır, bu yüzden Git'in hangi geçmiş çizgisini koruyacağını bilmesi gerekir.
git revert -m 1 <merge-hash> komutunu kullanın; burada -m 1, Git'e ilk ebeveyni (genellikle merge yaptığınız dal) korumasını söyler. Bir merge'ü geri almak, birleştirilmiş değişiklikleri geri alır ama merge'ü geçmişte tutar.Birden fazla commit'i aynı anda geri alabilir miyim?
Evet. Son iki commit'i geri almak için
git revert HEAD~2..HEAD gibi bir aralık geçirin ya da birkaç hash'i sıralayın. Git varsayılan olarak geri alınan her commit için bir revert commit'i oluşturur; tüm geri almaları commit yapmadan hazırlamak için -n ekleyin, ardından tek bir commit'i kendiniz oluşturun.Bunu çevrimiçi olarak deneyebilir miyim?
Evet.
git revert'i tarayıcınızdaki gerçek bir shell'de çalıştırmak için terminal playground'ı açın - kurulacak hiçbir şey yok. Coddy'nin ücretsiz etkileşimli Git kursu da değişiklikleri geri almayı adım adım ele alır.