Saya hanya berlari git push -f
karena kesalahan, sehingga menimpa cabang jauh.
Asli:
(remote origin:)
branch master -> commit aaaaaaa
branch foo -> commit bbbbbbb
(local)
branch master -> commit ccccccc
branch foo -> commit ddddddd
Setelah git push -f
:
(remote origin:)
branch master -> commit ccccccc
branch foo -> commit ddddddd
Di repositori lokal saya, saya sedang mengerjakan master
cabang, jadi saya bisa mengembalikan cabang master
untuk komit aaaaaaa
, karena saya bisa mendapatkan komit aaaaaaa
dari git reflog
. Namun, saya tidak bisa mendapatkan komitmen bbbbbbb
karena saya tidak menarik sebelumnya git push -f
.
Saya sudah mencoba git reflog
di repositori jarak jauh, tetapi tidak ada yang berguna di reflog di repositori kosong.
Bagaimana saya bisa mengembalikan cabang foo
kembali untuk melakukan bbbbbbb
di repositori jarak jauh?
(PS Saya tidak tahu nilai sebenarnya bbbbbbb
.)
git
file-recovery
Xiè Jìléi
sumber
sumber
Jawaban:
Coba ini:
Hubungkan ke remote melalui SSH.
Buat cadangan seluruh repositori jarak jauh.
Jika Anda tahu setidaknya beberapa karakter pertama
bbbbbbb
, gunakangit show bbbbbb
dan / ataugit log bbbbbb
untuk mengetahui hash komit penuh. (Jika Anda hanya perlu hash,git rev-parse bbbbbb
juga akan berfungsi, tetapi selalu lebih baik untuk memeriksa.)Jika Anda tidak tahu nilainya sama sekali , jalankan
git fsck
dan Anda harus mendapatkan daftar "komit menggantung". Periksa setiap komit menggunakangit show <hash>
dangit log <hash>
sampai Anda menemukan yang benar.Perbarui referensi cabang:
Gunakan
git log master
dangit log foo
untuk memastikan bahwa Anda memulihkan cabang yang benar.sumber
git fsck
.Kemungkinan layanan lain juga menyediakannya. Ini adalah penghemat hari.
sumber