Bagaimana saya bisa memindahkan repositori git saya ke komit tertentu


191

Di repositori git saya, saya membuat 5 commit, seperti di bawah ini di git log saya:

commit 4f8b120cdafecc5144d7cdae472c36ec80315fdc
Author: Michael 
Date:   Fri Feb 4 15:26:38 2011 -0800

commit b688d46f55db1bc304f7f689a065331fc1715079
Author: Michael
Date:   Mon Jan 31 10:37:42 2011 -0800

commit b364f9dcec3b0d52666c4f03eb5f6efb7e1e7bda
Author: Michael
Date:   Wed Jan 26 13:33:17 2011 -0800

commit 4771e26619b9acba3f059b491c6c6d70115e696c
Author: Michael 
Date:   Wed Jan 26 11:16:51 2011 -0800

commit 6e559cb951b9bfa14243b925c1972a1bd2586d59
Author: Michael 
Date:   Fri Jan 21 11:42:27 2011 -0800

Bagaimana saya bisa mengembalikan 4 komit saya sebelumnya secara lokal di cabang? Dengan kata lain, bagaimana saya bisa membuat cabang tanpa 4 commit terakhir saya (anggap saya memiliki SHA dari commit dari git log)?

Jawaban:


233

Untuk membuat cabang baru (lokal):

  • Dengan hash komit (atau bagian dari itu)

    git checkout -b new_branch 6e559cb
    
  • atau untuk kembali 4 komitmen dari KEPALA

    git checkout -b new_branch HEAD~4
    

Setelah cabang baru Anda dibuat (secara lokal), Anda mungkin ingin meniru perubahan ini pada remote dengan nama yang sama: Bagaimana saya bisa mendorong perubahan saya ke cabang jauh


Untuk membuang tiga komitmen terakhir , lihat jawaban Lunaryorn di bawah ini .


Untuk memindahkan HEAD cabang Anda saat ini ke komit yang ditentukan tanpa membuat cabang baru , lihat jawaban Arpiagar di bawah ini .


160

Semua perintah di atas membuat cabang baru dan dengan komit terbaru menjadi yang ditentukan dalam perintah, tetapi kalau-kalau Anda ingin cabang Anda saat ini HEADpindah ke komit yang ditentukan, di bawah ini adalah perintah:

 git checkout <commit_hash>

Ini melepaskan dan mengarahkan HEADkomit yang ditentukan dan menyelamatkan dari membuat cabang baru ketika pengguna hanya ingin melihat keadaan cabang sampai komit tertentu.


Anda mungkin ingin kembali ke komit terbaru & memperbaiki KEPALA yang terlepas:

Perbaiki kepala terpisah Git?


1
Ini akan melepaskan kepala. Tidak mudah.
— IgorGanapolsky

bahkan jika <commit_hash>ada di cabang berbeda yang ada di depan?
— Ciasto piekarz

Pertanyaan terkait hanya mengatakan untuk git checkout master, bersama satu atau dua kasus tepi yang mungkin berlaku untuk situasi tertentu.
— i336_

66

Jika Anda ingin membuang empat commit terakhir, gunakan:

git reset --hard HEAD^^^^

Atau, Anda dapat menentukan hash dari commit yang ingin Anda atur ulang:

git reset --hard 6e559cb

4
Ini meninggalkan langkah percabangan. Jika dia menjalankan dengan tepat apa yang diperlihatkan di sini, dia akan secara permanen kehilangan komitmen teratas tersebut.
— Jimmy Cuadra

3
Yah, tidak harus secara permanen - seseorang bisa mendapatkan SHA dari kepala sebelumnya melalui git reflogdan mengatur ulang kembali - tetapi itu akan membuangnya, ya.
— Amber

1
Jika komit didorong pertama kemudian reset, mereka dapat diambil kembali hanya dengan tarikan.
— Rick Smith

17

Cukup checkout komit yang Anda inginkan dari cabang baru Anda dan buat cabang baru

git checkout -b newbranch 6e559cb95

0

Bagaimana saya bisa mengembalikan 4 komit saya sebelumnya secara lokal di cabang?

Yang berarti, Anda tidak membuat cabang baru dan masuk ke kondisi terpisah. Cara baru untuk melakukannya adalah:

git switch --detach revison

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.