Pertanyaan Membatalkan pengaturan ulang git?


Apa cara paling sederhana untuk membatalkan

git reset HEAD~

perintah? Saat ini, satu-satunya cara yang dapat saya pikirkan adalah melakukan "git clone http: // ..." dari repo jarak jauh.


892
2018-03-24 18:08


asal


Jawaban:


Jawaban singkat:

git reset 'HEAD@{1}'

Jawaban panjang:

Git menyimpan log semua pembaruan ref (mis., Checkout, setel ulang, commit, merger). Anda dapat melihatnya dengan mengetik:

git reflog

Di suatu tempat dalam daftar ini adalah komitmen yang Anda kehilangan. Katakanlah Anda baru saja mengetik git reset HEAD~ dan ingin membatalkannya. Reflog saya terlihat seperti ini:

$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]

Baris pertama mengatakan itu HEAD 0 posisi yang lalu (dengan kata lain, posisi saat ini) adalah 3f6db14; itu diperoleh dengan mengatur ulang ke HEAD~. Baris kedua mengatakan itu HEAD 1 posisi yang lalu (dengan kata lain, keadaan sebelum reset) adalah d27924e. Itu diperoleh dengan memeriksa komitmen tertentu (meskipun itu tidak penting sekarang). Jadi, untuk membatalkan reset, jalankan git reset HEAD@{1} (atau git reset d27924e).

Jika, di sisi lain, Anda telah menjalankan beberapa perintah lain sejak saat itu yang memperbarui HEAD, komitmen yang Anda inginkan tidak akan berada di bagian atas daftar, dan Anda harus mencari melalui reflog.

Satu catatan terakhir: Mungkin lebih mudah untuk melihat reflog untuk cabang tertentu yang ingin Anda batalkan ulang, katakan master, daripada HEAD:

$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]

Ini seharusnya memiliki lebih sedikit noise daripada yang umum HEAD reflog.


1682
2018-03-28 03:32



Pertanyaan lama, dan jawaban yang diposting bekerja dengan baik. Saya akan berpadu dengan opsi lain.

git reset ORIG_HEAD

ORIG_HEAD referensi komit itu HEAD sebelumnya direferensikan.


89
2018-01-25 14:10



Situasi saya sedikit berbeda, saya lakukan git reset HEAD~ tiga kali.

Untuk membatalkannya saya harus lakukan

git reset HEAD@{3}

jadi Anda harus bisa melakukannya

git reset HEAD@{N}

Tetapi jika Anda telah melakukan git reset menggunakan

git reset HEAD~3

Anda perlu melakukannya

git reset HEAD@{1}

Karena {N} merepresentasikan jumlah operasi dalam Reflog. Seperti yang ditunjukkan Mark di komentar.


28
2017-08-15 08:38



1.Gunakan git reflog untuk mendapatkan semua pembaruan referensi.

2git reset <id_of_commit_to_which_you_want_restore>

3 Lain kali hindari ini


0
2017-07-05 15:15