Ini sangat tergantung pada apa yang Anda maksud dengan "kembalikan".
Beralih sementara ke komit yang berbeda
Jika Anda ingin sementara kembali ke sana, main-main, lalu kembali ke tempat Anda sekarang, yang harus Anda lakukan adalah memeriksa komit yang diinginkan:
# This will detach your HEAD, that is, leave you with no branch checked out:
git checkout 0d1d7fc32
Atau jika Anda ingin membuat komitmen saat berada di sana, silakan dan buat cabang baru saat Anda berada di sana:
git checkout -b old-state 0d1d7fc32
Untuk kembali ke tempat Anda berada sekarang, periksa cabang tempat Anda berada lagi. (Jika Anda telah membuat perubahan, seperti biasa ketika berpindah cabang, Anda harus menghadapinya sebagaimana mestinya. Anda dapat mengatur ulang untuk membuangnya; Anda dapat menyimpan, checkout, menyimpan pop untuk membawanya, Anda dapat melakukan mereka ke cabang di sana jika Anda ingin cabang di sana.)
Sulit menghapus komitmen yang tidak dipublikasikan
Sebaliknya, jika Anda ingin benar-benar menyingkirkan semua yang telah Anda lakukan sejak itu, ada dua kemungkinan. Pertama, jika Anda belum menerbitkan salah satu dari komitmen ini, cukup setel ulang:
# 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.
Jika Anda kacau, Anda sudah membuang perubahan lokal Anda, tetapi Anda setidaknya bisa kembali ke tempat Anda sebelumnya dengan mengatur ulang.
Batalkan komitmen yang dipublikasikan dengan komitmen baru
Di sisi lain, jika Anda telah menerbitkan karya, Anda mungkin tidak ingin mengatur ulang cabang, karena itu secara efektif menulis ulang sejarah. Dalam hal ini, Anda memang dapat mengembalikan komit. Dengan Git, kembalikan memiliki arti yang sangat spesifik: buat komit dengan tambalan terbalik untuk membatalkannya. Dengan cara ini Anda tidak menulis ulang riwayat apa pun.
# 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
The git-revert
manualnya sebenarnya mencakup banyak ini dalam deskripsi. Tautan lain yang bermanfaat adalah bagian git-scm.com yang membahas git-revert .
Jika Anda memutuskan bahwa Anda tidak ingin mengembalikannya, Anda dapat mengembalikannya (seperti dijelaskan di sini) atau mengatur ulang kembali sebelum kembali (lihat bagian sebelumnya).
Anda juga dapat menemukan jawaban ini bermanfaat dalam kasus ini:
Bagaimana cara memindahkan HEAD kembali ke lokasi sebelumnya? (Kepala terpisah)