Git'te bir ödemeyi nasıl geri alabilirim?


134

Yerel git depomdan önceki bir commit'i kontrol ettim. Ben bir değişiklik yapmadım, sadece bakıyordum. Şimdi en son taahhüdüme geri dönmek istiyorum - bunu nasıl yapacağım?

Kontrol etmek için kullandığım tam komut:

git checkout e5dff6b3c5d704f9b598de46551355d18235ac08

Şimdi git log yazdığımda, en üstte bu teslim edildiğini görüyorum, ancak sonraki taahhütlerimden hiçbiri. Bunları yanlışlıkla mı sildim?


Sanırım yanlış görüyorsunuz: şubelere (başkanlara)
bakıyoruz

Yanıtlar:


184

Önce şunu deneyin:

git checkout master

(Şundan farklı bir şubedeyseniz master, oradaki şube adını kullanın.)

Bu işe yaramazsa, deneyin ...

Tek bir dosya için:

git checkout HEAD /path/to/file

Depo çalışma kopyasının tamamı için:

git reset --hard HEAD

Ve bu işe yaramazsa, eski baş SHA'nızı bulmak ve buna sıfırlamak için reflog'a bakabilirsiniz:

git reflog
git reset --hard <sha from reflog>

HEAD her zaman mevcut şubenizdeki en son commit'i gösteren bir isimdir.


ancak hangi SHA1 karmasını vereceğime karar vermek için taahhütlerimi nasıl görüntüleyebilirim?
Yuval Karmi

1
Sen - HEADyazarsın, harfi harfine. Git ne HEADanlama geldiğini zaten biliyor . Ancak, gerçekten, gerçekten bunun yerine bir SHA1 vermek istiyorsanız git log, commit günlüğüne bakmak için kullanabilirsiniz .
Amber

çalıştırdığımda git reset --hard HEADbeni o kontrol edilen işleme geri getiriyor ... Kontrol etmek için kullandığım tam komutu göndereceğim.
Yuval Karmi

(Merak ediyorsanız, git rev-parse HEADyazıp son kaydetmenize karşılık gelen bir SHA1 verdiğini görebilirsiniz.)
Amber

Yukarıya iki yeni seçenek ekledim, bunları deneyin (sırayla - önce ödeme sürümünü deneyin).
Amber


16

Muhtemelen istiyorsundur git checkout masterya da git checkout [branchname].

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.