Yanlışlıkla yanlış dosyaları Git'e işledim, ancak henüz sunucuya aktarmadım.
Bu değişiklikleri yerel depodan nasıl geri alabilirim?
$ git commit -m "Something terribly misguided" # (1)
$ git reset HEAD~ # (2)
<< edit files as necessary >> # (3)
$ git add ... # (4)
$ git commit -c ORIG_HEAD # (5)
git status
içinde "Changes not staged for commit" olarak görüneceklerdir, bu nedenle işlemeden önce bunları tekrar eklemeniz gerekecektir). Eğer sadece önceki işleme daha fazla değişiklik eklemek veya işleme mesajını değiştirmek istiyorsanız1, bunun yerine git reset --soft HEAD~
kullanabilirsiniz, bu da git reset HEAD~
2 gibidir, ancak mevcut değişikliklerinizi aşamalı olarak bırakır.git add
yapın.eski head
i .git/ORIG_HEAD
dosyasına kopyalar; -c ORIG_HEAD
ile commit
başlangıçta eski commitin log mesajını içeren ve onu düzenlemenize izin veren bir editör açacaktır. Mesajı düzenlemeniz gerekmiyorsa,
-C` seçeneğini kullanabilirsiniz.Bununla birlikte, dizine yeni değişiklikler eklediyseniz, commit --amend
kullanmanın bunları önceki işleminize ekleyeceğine dikkat edin.
Kod zaten sunucunuza gönderilmişse ve geçmişin üzerine yazma (rebase) izniniz varsa:
git push origin master --force
Bu cevaba da bakabilirsiniz:
Yukarıdaki cevap size geri dönmek istediğiniz SHA-1'in ne olduğunu bulmak için kullanılan git reflog
u gösterecektir. Geri almak istediğiniz noktayı bulduğunuzda, yukarıda açıklandığı gibi komut dizisini kullanın.
1 Bununla birlikte, commit mesajınızda bir hata yaptıysanız, daha önceki bir commit'e sıfırlamanız gerekmediğini unutmayın. Daha kolay bir seçenek git reset
(o zamandan beri yaptığınız tüm değişiklikleri geri almak için) ve ardından git commit --amend
yapmaktır, bu da varsayılan commit mesajı düzenleyicinizi son commit mesajıyla önceden doldurulmuş olarak açacaktır.
2 HEAD~
, HEAD~1
ile aynıdır
İşleri istediğiniz gibi yapmak için dosya ekleyin/kaldırın:
git rm classdir
git add sourcedir
Ardından işlemi değiştirin:
git commit --amend
Önceki hatalı işlem, yeni dizin durumunu yansıtacak şekilde düzenlenecektir - başka bir deyişle, ilk etapta hatayı hiç yapmamışsınız gibi olacaktır.
Bunu yalnızca henüz itme işlemi yapmadıysanız yapmanız gerektiğini unutmayın. Eğer push ettiyseniz, o zaman normal olarak bir düzeltme yapmanız gerekecektir.
git rm yourfiles/*.class
git commit -a -m "deleted all class files in folder 'yourfiles'"
veya
git reset --hard HEAD~1
Uyarı: Yukarıdaki komut, işlemek istediğiniz .java
dosyalarındaki (ve diğer tüm dosyalardaki) değişiklikleri kalıcı olarak kaldıracaktır.
HEAD-1e
hard reset`, çalışma kopyanızı yanlış commitinizden önceki commit durumuna ayarlayacaktır.