Tüm Değişiklikleri İptal Etmek İçin Tersinir Yöntem:
Bu soruyu birleştirme yaptıktan ve hemen ardından kasayı geliştirmeyi unuttuktan sonra buldum . Tahmin ettiniz: Birkaç dosyayı doğrudan ana bilgisayarda değiştirmeye başladım . D'Ah! Durumum pek benzersiz olmadığından (hepimiz yaptık, değil mi; ->), ustayı yeniden geliştirmek gibi görünmesi için tüm değişiklikleri attığım tersine çevrilebilir bir yol sunacağım .
git diff
Hangi dosyaların değiştirildiğini görmek ve hatamın kapsamını değerlendirmek için a yaptıktan sonra , şunu çalıştırdım:
git stash
git stash clear
İlk olarak tüm değişiklikleri sakladıktan sonra, daha sonra temizlendi. Ana dosyalarda yanlışlıkla yapılan tüm değişiklikler gitti ve eşlik geri yüklendi.
Şimdi bu değişiklikleri geri yüklemek istediğimi varsayalım. Bunu yapabilirim. İlk adım, temizlediğim / bıraktığım zulanın karmasını bulmak:
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
Hash'i öğrendikten sonra, taahhüt edilmeyen değişiklikleri başarıyla geri yükledim:
git stash apply hash-of-cleared-stash
Bu değişiklikleri gerçekten geri yüklemek istemedim, sadece onları geri alabileceğimi doğrulamak istedim, bu yüzden onları tekrar sildim.
Diğer bir seçenek de , değişiklikleri silmek yerine zulayı farklı bir şubeye uygulamaktır . Bu nedenle, yanlış dalda çalışmaktan kaynaklanan değişiklikleri temizlemek açısından, stash
size boo-boo'unuzdan kurtulmanız için büyük bir esneklik sağlar.
Her neyse, bir daldaki değişiklikleri temizlemek için tersine çevrilebilir bir yol istiyorsanız, yukarıdakiler bu kullanım durumunda daha az tehlikeli bir yoldur.
git reset --hard HEAD^