Git'te son commit'i geri almak sık ihtiyaç duyulan bir işlemdir. Ancak hangi yöntemi seçtiğin çok önemlidir, çünkü bazıları değişikliklerini silebilir. Duruma göre üç ana yol vardır.
1) Commit'i geri al ama değişiklikleri koru
Son commit'i geri alıp yaptığın değişiklikleri düzenleme alanında (staging) tutmak için:
git reset --soft HEAD~1
Bu, ‘commit'i çözer’ ama kodun aynen durur. Commit mesajını düzeltmek veya birkaç commit'i birleştirmek için idealdir.
2) Commit'i ve staging'i geri al, dosyaları koru
git reset --mixed HEAD~1
Değişiklikler dosyalarında kalır ama artık ‘eklenmemiş’ hâle döner. (Varsayılan davranıştır.)
3) Commit'i ve TÜM değişiklikleri sil
git reset --hard HEAD~1
Dikkat: Bu, son commit'teki değişiklikleri geri dönülmez biçimde siler. Emin değilsen kullanma.
4) Paylaşılmış commit için: revert
Commit'i başkalarıyla paylaştıysan (push ettiysen), geçmişi silmek yerine revert kullan. Bu, eski commit'i silmez; onu geri alan yeni bir commit oluşturur:
git revert HEAD
Hangisini seçmeliyim?
Henüz push etmediysen reset, push ettiysen revert güvenlidir. --hard'ı yalnızca değişiklikleri gerçekten atmak istediğinde kullan.