Yanıtlar:
git revert <commit>…Tüm n kaydetme için kullanabilir ve ardından her zamanki gibi itip geçmişi değiştirmeden bırakabilirsiniz .
Veya ile "geri dönebilirsiniz" git reset --hard HEAD~n. Herkese açık veya paylaşılan bir depoda bastırıyorsanız, orijinal şubenize bağlı olarak diğerlerinin çalışmalarını ayırabilir ve bozabilirsiniz. Git bunu yapmanızı engelleyecektir, ancak git push -fgüncellemeyi zorlamak için kullanabilirsiniz .
revert, özellik dallarınızın "zaten" birleştirilmiş olarak değerlendirilmesine neden olacağını lütfen unutmayın . Yani bu dalların çünkü en edilmektedir aslında birleştirilen. Ancak değişiklikler geri alındı. Çözüm: Geri döndürülen taahhüdü kesin seçin veya geri alın .
reset --hard, özellik dallarının zaten birleştirilmiş olarak değerlendirilmesine de neden oluyor mu? Benim varsayımım, olmazdı (nerede revertolurdu).
elmarco haklı ... onun önerisi, paylaşılan / herkese açık depolar (veya en azından genel şubeler) için en iyisidir. Paylaşılmadıysa (veya başkalarını bozmaya istekliysen), belirli bir ref:
git push origin old_master:master
Veya, belirli bir SHA1 kaydı varsa (kısaltılmış biçimde 1e4f99e diyelim), geri dönmek isteyebilirsiniz:
git push origin 1e4f99e:master
Neyse ki , istenmeyen commit'i tamamen ortadan kaldıran Pat Notz'un çözümünü kullanacak bir konumdaydım . Ancak, başlangıçta hatayı aldım
error: failed to push some refs to 'ssh://git@gitrepo.git'
To prevent you from losing history, non-fast-forward updates were rejected*
Ancak force ( -f) seçeneği eklendiğinde bu hatanın üzerine yazılır
git push -f origin 52e36b294e:master
Uzak depoya doğrudan erişiminiz varsa, her zaman kullanabilirsiniz:
git reset --soft <sha1>
Bu, var olmayan çalışma dizinini değiştirme girişimi olmadığı için çalışır. Daha fazla ayrıntı için lütfen orijinal yanıta bakın:
git reset --hard [sha1]Şunu kullanarak belirli bir kaydetmeye geri dönebilirsiniz : burada sha1, kesinleştirme karma tanımlayıcısıdır.