2011-07-06 31 views
8

Büyük bir hata yaptıktan sonra son işleme geri dönmek istedim, ancak biraz fazla adil geri almayı başardım. Yeniden yazmak istediğim taahhüt, bash'ta 'git log' yazdığımda görünmüyor (sanırım artık geçmişte değil). Son işleme tarihini kurtarabilmemin herhangi bir yolu var mı?Bir Git rollback'i geri alma

Ayrıca, bu işleri kolaylaştırıyorsa, aynı proje için tutulmada eGit kullanıyorum. Teşekkürler. Komut satırından sorun oluşturmuyorsa

cevap

21

, sen repo, git bir git reflog yapmak ve almak sen ise sırasıyla "geri alma" istediğiniz işlemek ve yapılacak bir git reset --hard <commit>

Ayrıca git reset --hard [email protected]{1} yapmak mümkün olacaktır ve daha sonra İstenilen taahhütlere geri dönüş ve geri dönüş.

+2

İlgili: [git reflog, güvenlik ağınız] (http://gitready.com/intermediate/2009/02/09/reflog-your-safety-net.html) –

+0

Harika! Bana çok iş kurtardın, teşekkürler. – Chironex

2

Genel olarak değişikliklerinizi geriye dönük olarak değil zamanda zamanında yapmak daha iyi olduğunu düşünüyorum. Git'in yaklaşımı, bu işlemi “geri almak” şeklindedir. Bir işlemi geri döndürdüğünüzde, söz konusu işleme ait çalışma dizininize ters numarasına bakın. Sonra bunu ekleyip, siz de yeni bir taahhütte bulunmuşsunuz demektir. Bu, geri aldığınız işlemin "geri alınmasını" taahhüt eder ve böyle bir şeyin olduğu tarihte bir rekor bırakır. senin özünü, yapmak çok kolay.

+0

Tarihin silinmez bir parçası olmadan (yani başkalarıyla paylaşılmadan) hatalı bir şey yaptığınızı fark ettiğinizde, kaydetmemesi tercih edilir. Kötü taahhütlerin kaydedilmesi, 'git bisect 'gibi araçların daha fazla yanmasına sebep olduğu anlamına gelir. – Novelocrat

+0

Sanırım bu doğru. Bu açık mesajların beni bu açıdan çok fazla kederden kurtardığını görüyorum. Ve eğer benim geridönüşümü geri almam gerekiyorsa (ki zaman zaman sahip olduğum), geri dönmek zorunda kalması iyi olur. –