Menu
Coddy logo textTech

Git: Bir Commit'i Geri Alma

Son güncelleme

Bir commit'i nasıl geri alacağınız, hangi commit olduğuna ve push edilip edilmediğine bağlıdır. Geçmişinizin derinliklerinde kalmış eski bir commit - ya da zaten paylaşılmış herhangi bir şey - git revert ister; bu komut hiçbir şeyi yeniden yazmadan onu tersine çeviren yeni bir commit ekler. Art arda gelen yakın tarihli yerel commit'ler ise git reset ile basitçe geri alınabilir. Tek ihtiyacınız en son commit'i geri almaksa, git son commit'i geri alma sayfası bu hızlı düzeltmenin her çeşidini ele alır.

Bunları terminal playground'da deneyin: tarayıcınızda gerçek bir shell, kurmanız gereken hiçbir şey yok.

Hangi komut kullanılmalı

SituationCommand
Daha eski tek bir commit'i geri al, sonrasındaki her şeyi korugit revert <hash>
Zaten push ettiğin bir commit'i geri algit revert <hash>
Son 3 yerel commit'i geri al, çalışmayı korugit reset --soft HEAD~3
Son 3 yerel commit'i geri al, çalışmayı silgit reset --hard HEAD~3
Bir aralığı yeni ters commit'lerle geri algit revert HEAD~3..HEAD

reset vs revert

Behaviorgit resetgit revert
Geçmişi yeniden yazarEvetHayır
Push edilmiş commit'lerde güvenliHayırEvet
Yeni bir commit oluştururHayırEvet
Geçmişin ortasındaki eski commit'lerde çalışırHayırEvet
Değişiklikleri silebilirEvet (--hard)Hayır

Çalışan örnek

Belirli bir eski commit'i - zaten push edilmiş olsa bile - sonrasında gelen commit'lere dokunmadan geri alın.

StepCommandResult
1git log --onelineHatalı commit'in hash'ini bulun (örn. a1b2c3d)
2git revert a1b2c3dYeni bir commit onu tersine çevirir; sonraki commit'ler olduğu gibi kalır
3git pushDüzeltmeyi paylaşın - hiçbir geçmiş yeniden yazılmadı

Git commit geri alma SSS

Sonrasındaki commit'leri kaybetmeden daha eski bir commit'i nasıl geri alırım?
git revert <hash> kullanın. Revert, yalnızca adını verdiğiniz commit'i tersine çeviren yeni bir commit oluşturur - ondan sonraki her commit tam olarak olduğu gibi kalır. Önce hash'i git log --oneline ile bulun. Revert sonraki değişikliklerle çakışırsa Git duraklar; çakışmayı çözüp git revert --continue çalıştırabilirsiniz.
Birden çok commit'i aynı anda nasıl geri alırım?
Yalnızca yerel commit'ler için git reset --soft HEAD~3, son üç commit'i değişikliklerini stage'de tutarak kaldırır (silmek için --hard kullanın). Push edilmiş commit'ler için bunun yerine aralığı revert edin: git revert --no-commit HEAD~3..HEAD üçünü de tersine çevirir; ardından tek bir git commit geri almayı kaydeder.
Zaten push ettiğim bir commit'i nasıl geri alırım?
Reset yerine git revert <hash> kullanın. Revert, hedef commit'in değişikliklerini geri alan yeni bir commit oluşturur ve geçmişi olduğu gibi bırakır. Paylaşılan commit'leri geri almanın güvenli yolu budur; push edilmiş geçmişi reset ile yeniden yazmak, herkesi kendi kopyalarını uzlaştırmaya zorlar.
Ne zaman reset, ne zaman revert kullanmalıyım?
Commit'ler yalnızca size aitse ve hâlâ yerelse reset kullanın: dalı, sanki o commit'ler hiç olmamış gibi geriye taşır. Commit push edilmişse, paylaşılmışsa veya geçmişin ortasında duruyorsa revert kullanın: değişiklikleri, herkesin güvenle çekebileceği yeni bir commit ile geri alır.
Bunu çevrimiçi olarak deneyebilir miyim?
Evet. Bu komutları tarayıcınızdaki gerçek bir shell'de çalıştırmak için terminal playground'u açın; kurmanız gereken hiçbir şey yok. Coddy'nin ücretsiz etkileşimli Git kursu da değişiklikleri geri almayı adım adım ele alır.
Coddy programming languages illustration

Coddy ile Git öğren

BAŞLA