Git: Son commit'i geri alma
Son güncelleme
En son commit'i geri almak için, değişikliklerine ne olacağına karar verin. git reset --soft HEAD~1 ile onları staged tutun, düz bir git reset HEAD~1 ile staged olmadan tutun veya git reset --hard HEAD~1 ile atın. Commit yalnızca biraz hatalıysa, git commit --amend onu yerinde düzeltir. Zaten push edildiyse, geçmişi yeniden yazmak yerine git revert kullanın. Daha eski bir commit'i veya birkaçını birden geri almak için git commit geri alma sayfasına bakın.
Bunları terminal playground'da deneyin: tarayıcınızda gerçek bir shell, kurulacak hiçbir şey yok.
Değişikliklerle ne yapacağınızı seçin
| Goal | Command |
|---|---|
| Commit'i geri al, değişiklikleri staged tut | git reset --soft HEAD~1 |
| Commit'i geri al, değişiklikleri staged olmadan tut | git reset HEAD~1 |
| Commit'i geri al, değişiklikleri sil | git reset --hard HEAD~1 |
| Son commit'i düzelt (mesaj veya dosyalar) | git commit --amend |
| Zaten push ettiğiniz bir commit'i geri al | git revert HEAD |
Uygulamalı örnek
Son commit'i geri alın ve daha iyi bir mesajla yeniden commit edin.
| Step | Command | Result |
|---|---|---|
| 1 | git reset --soft HEAD~1 | Commit kaldırıldı, değişiklikler staged kalır |
| 2 | git commit -m "clearer message" | Aynı değişiklikleri yeniden commit edin |
Git son commit'i geri alma SSS
Son commit'i nasıl geri alırım ama değişiklikleri korurum?
git reset --soft HEAD~1 çalıştırın. Bu, son commit'i kaldırır ancak değişikliklerini staged bırakır, böylece hemen yeniden commit edebilirsiniz. Değişikliklerin çalışma ağacınızda staged olmadan durması için git reset HEAD~1 (varsayılan mod) kullanın.Son commit'i nasıl geri alır ve değişiklikleri silerim?
git reset --hard HEAD~1 çalıştırın. Bu, commit'i kaldırır ve değişikliklerini çalışma ağacınızdan atar. Yıkıcıdır: işe ihtiyaç duyabilirseniz, bunun yerine --soft kullanın veya daha sonra git reflog ile kurtarın.Sadece commit mesajını düzeltmem gerekiyorsa ne olur?
git commit --amend kullanın. Son commit'i yeniden açar, böylece ayrı bir commit oluşturmadan mesajını düzenleyebilir (ve gerekirse dosyaları yeniden staged edebilirsiniz). Zaten push ettiğiniz bir commit'i amend etmekten kaçının, çünkü bu geçmişi yeniden yazar.Push ettikten sonra son commit'i nasıl geri alırım?
git revert HEAD kullanın. Revert, sonuncuyu tersine çeviren yeni bir commit oluşturur ve geçmişi bozulmadan bırakır: paylaşılan dallar için güvenli seçim. Push edilmiş bir commit'i resetlemek, herkesi yeniden yazılmış bir dalı uzlaştırmaya zorlar.