Bu, "geri döndürme" ile ne demek istediğine çok bağlıdır.
Geçici olarak farklı bir işleme geçme
Geçici olarak ona geri dönmek, etrafta dolaşmak, sonra bulunduğunuz yere geri dönmek istiyorsanız, tek yapmanız gereken, istenen taahhüdü kontrol etmek:
# This will detach your HEAD, that is, leave you with no branch checked out:
git checkout 0d1d7fc32
Ya da oradayken taahhütte bulunmak istiyorsanız, devam edin ve oradayken yeni bir şube açın:
git checkout -b old-state 0d1d7fc32
Bulunduğunuz yere geri dönmek için, bulunduğunuz şubeye bir göz atın. (Değişiklikler yaptıysanız, şubeleri değiştirirken her zaman olduğu gibi, onlarla uygun şekilde başa çıkmanız gerekir. Onları atmak için sıfırlayabilirsiniz; orada bir dal istiyorsanız onları bir dala.)
Yayınlanmayan taahhütleri sert silme
Öte yandan, o zamandan beri yaptığınız her şeyden gerçekten kurtulmak istiyorsanız, iki olasılık var. Biri, bu taahhütlerin hiçbirini yayınlamadıysanız, sadece sıfırlayın:
# This will destroy any local modifications.
# Don't do it if you have uncommitted work you want to keep.
git reset --hard 0d1d7fc32
# Alternatively, if there's work to keep:
git stash
git reset --hard 0d1d7fc32
git stash pop
# This saves the modifications, then reapplies that patch after resetting.
# You could get merge conflicts, if you've modified things which were
# changed since the commit you reset to.
Sıkışırsanız, yerel değişikliklerinizi zaten atmışsınızdır, ancak en azından tekrar sıfırlayarak daha önce bulunduğunuz yere geri dönebilirsiniz.
Yayınlanan taahhütleri geri al ile yeni taahhütler
Öte yandan, çalışmayı yayınladıysanız, büyük olasılıkla geçmişi yeniden yazdığı için muhtemelen şubeyi sıfırlamak istemezsiniz. Bu durumda, gerçekten taahhütleri geri alabilirsin. Git ile geri alma işleminin çok özel bir anlamı vardır: iptal etmek için ters düzeltme eki ile bir taahhüt oluşturun. Bu şekilde hiçbir tarihi yeniden yazmazsınız.
# This will create three separate revert commits:
git revert a867b4af 25eee4ca 0766c053
# It also takes ranges. This will revert the last two commits:
git revert HEAD~2..HEAD
#Similarly, you can revert a range of commits using commit hashes:
git revert a867b4af..0766c053
# Reverting a merge commit
git revert -m 1 <merge_commit_sha>
# To get just one, you could use `rebase -i` to squash them afterwards
# Or, you could do it manually (be sure to do this at top level of the repo)
# get your index and work tree into the desired state, without changing HEAD:
git checkout 0d1d7fc32 .
# Then commit. Be sure and write a good message describing what you just did
git commit
git-revert Manpage aslında açıklamasında bu çok kapsar. Bir başka faydalı link ise git-cm.com bölümünü git-revert'i tartışmaktır .
Sonuçta geri dönmek istemediğinize karar verirseniz, geri dönme (burada açıklandığı gibi) geri dönebilir veya geri dönmeden önceki durumuna dönebilirsiniz (önceki bölüme bakın).
Bu durumda bu cevabı da yararlı bulabilirsiniz:
HEAD bir önceki konuma nasıl taşınır? (Müstakil kafa)