Saya melakukan git commit
tetapi saya belum mendorongnya ke repositori. Jadi ketika saya melakukannya git status
, saya mendapatkan # cabang Anda di depan 'master' dengan 1 komit.
Jadi jika saya ingin mengembalikan komit atas saya, bisakah saya lakukan:
git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
mengingat bahwa ketika saya melakukannya git log
saya mendapatkan:
komit eb27bf26dd18c5a34e0e82b929e0d74cfcaab316 Tanggal: Sel 29 Sep 11:21:41 2009 -0700 komit db0c078d5286b837532ff5e276dcf91885df2296 Tanggal: Sel 22 Sep 10:31:37 2009 -0700
reset --hard
dapat mengakibatkan hilangnya pekerjaan, karena melakukan hal itu mengakibatkan git menimpa file lokal Anda (pekerjaan baru Anda) dengan yang dari web (terjadi pada saya). Pertanyaan dan jawaban tentang git harus secara eksplisit menyatakan apa yang dilakukan perintah mereka dan apa risikonya bagi pembaca.Jawaban:
Sebenarnya, ketika Anda menggunakan
git reset
, Anda harus merujuk komit bahwa Anda ulang untuk ; jadi Anda ingindb0c078
komit, mungkin.Versi yang lebih mudah adalah
git reset --hard HEAD^
, untuk mengatur ulang ke komit sebelumnya sebelum kepala saat ini; dengan cara itu Anda tidak perlu menyalin di sekitar ID komit.Waspadalah saat Anda melakukan apa pun
git reset --hard
, karena Anda dapat kehilangan semua perubahan yang tidak dikomit yang Anda miliki. Anda mungkin ingin memeriksagit status
untuk memastikan bahwa copy pekerjaan Anda bersih, atau bahwa Anda memang ingin menghilangkan segala perubahan yang ada.Selain itu, alih-alih KEPALA Anda dapat menggunakan
origin/master
sebagai referensi, seperti yang disarankan oleh @bdonlan di komentar:git reset --hard origin/master
sumber
git reset --hard origin/master
, untuk mengatur ulang ke apa pun asalnya.git reset
kode Anda. Bantulah diri Anda di masa depan: Perbedaan antarareset
,,reset --soft
danreset --hard
(Apa yang terjadi dengangit add
alias "pekerjaan Anda" Anda sebelumnya :) Picture: linkgit status
akan menunjukkan perubahan dan komit akan dihapus / perubahan hilang).git reset --hard HEAD^
karena Anda akan kehilangan perubahan pada file yang dikomit (perubahan Anda akan dihapus). Ada dua cabang untuk pertanyaan ini: Untuk mengembalikan komit tetapi masih ada perubahan pada disk melakukannyagit reset --soft HEAD~1
JIKA Anda TIDAK mendorong perubahan Anda ke jarak jauh
Periksa apakah copy pekerjaan sudah bersih oleh
git status
.LAIN Anda telah mendorong perubahan Anda ke jarak jauh
Perintah ini akan mengembalikan / menghapus yang terakhir komit / ubah dan kemudian Anda bisa mendorong
sumber
untuk mengatur ulang ke apa pun asalnya.
Ini diposting oleh @bdonlan di komentar . Saya menambahkan jawaban ini untuk orang-orang yang tidak membaca komentar.
sumber
master
- yang harus saya gunakanorigin/mybranch
kemudian?git reset HEAD~
yang hanya menetapkan kembali komit ke dalam kodeAda dua cabang untuk pertanyaan ini (Mengembalikan komit tidak berarti saya ingin kehilangan semua perubahan lokal saya):
1. Untuk mengembalikan komit terbaru dan membuang perubahan pada file berkomitmen lakukan:
git reset --hard HEAD~1
2. Untuk mengembalikan komit terbaru tetapi mempertahankan perubahan lokal (pada disk) lakukan:
git reset --soft HEAD~1
Ini (perintah nanti) akan membawa Anda ke keadaan Anda seharusnya jika Anda melakukannya
git add
.Jika Anda ingin menghapus stage file setelah itu, lakukan
git reset
Sekarang Anda dapat membuat lebih banyak perubahan sebelum menambahkan dan kemudian melakukan lagi.
sumber
Ketik saja konsol:
Perintah ini membuang semua commit lokal sebelum HEAD jarak jauh
sumber
Saya percaya bahwa salah satu dari itu akan sesuai dengan kebutuhan Anda
1 - Batalkan komit dan pertahankan semua file dipentaskan:
git reset --soft HEAD~;
2 - Membatalkan komit dan hapus stage semua file:
git reset HEAD~;
3 - Membatalkan komit dan hapus semua perubahan:
git reset --hard HEAD~;
Di sinilah saya menemukan jawabannya
sumber
Hapus komit terakhir sebelum push
git reset --soft HEAD~1
1
berarti komit terakhir, jika Anda ingin menghapus dua penggunaan terakhir2
, dan sebagainya *sumber
--soft
adalah tambahan yang bagus untuk jawaban yang mungkin, tetapi bisakah Anda juga menyebutkan alasannya? Menjelaskan solusi Anda selalu membantu. Cobalah untuk tetap menggunakan bahasa Inggris. Terima kasih--soft
- memastikan Anda tidak kehilangan perubahan dalam file yangSaya telah mengalami situasi yang sama saya lakukan di bawah ini karena ini jauh lebih mudah. Dengan melewati
commit-Id
Anda dapat mencapai komit tertentu yang ingin Anda tuju:Saat Anda ingin menghapus komit terakhir Anda sehingga Anda harus melewati
commit-Id
tempat Anda perlu memindahkan pointer Anda:sumber
Inilah yang saya lakukan:
Pertama checkout cabang Anda (untuk
master
cabang kasus saya ):Kemudian atur ulang ke HEAD remote ^ ( itu akan menghapus semua perubahan lokal Anda ), paksa bersih dan tarik:
sumber
Salah satu caranya adalah dengan menghapus cabang lokal dan checkout cabang itu dari server jika cabang lokal Anda berada di depan dari jarak jauh oleh beberapa komit dan Anda perlu membatalkan semua dari mereka.
sumber
Saya hanya memiliki masalah yang sama dan akhirnya melakukan:
(N adalah jumlah commit yang akan ditampilkan git)
Itu meminta editor teks Anda dan kemudian Anda dapat menghapus komit yang Anda inginkan dengan menghapus baris yang terkait dengannya.
sumber