Cara menonaktifkan commit terakhir saya di git

Bagaimana saya bisa mengungkapkan komit terakhir saya di git?

Itu

 git reset --hard HEAD 

atau

 git reset --hard HEAD^ 
513
17 мая '10 в 1:26 2010-05-17 01:26 richard diatur 17 Mei '10 pada 1:26 2010-05-17 01:26
@ 8 jawaban

Jika Anda tidak yakin apa yang Anda maksud dengan "uncommit" dan tidak tahu apakah Anda ingin menggunakan git reset , lihat " Kembali ke komit Git sebelumnya ".

Jika Anda mencoba memahami git reset lebih baik, lihat " Bisakah Anda menjelaskan apa arti git reset dalam Bahasa Inggris? ".


Jika Anda tahu bahwa Anda ingin menggunakan git reset , itu masih tergantung pada apa yang Anda maksud dengan "uncommit". Jika semua yang ingin Anda lakukan adalah membatalkan tindakan yang dilakukan, biarkan semuanya tetap utuh, gunakan:

 git reset --soft HEAD^ 

Jika Anda ingin membatalkan tindakan komit dan semua yang Anda masukkan, tetapi biarkan pohon kerja (file Anda tetap utuh):

 git reset HEAD^ 

Dan jika Anda benar-benar ingin membatalkannya sepenuhnya, buang semua perubahan yang tidak dikomit, jatuhkan semua sebelum komit sebelumnya (seperti pertanyaan awal):

 git reset --hard HEAD^ 

Pertanyaan aslinya juga bertanya kepadanya HEAD^ bukan HEAD . HEAD mengacu pada komit saat ini - biasanya ujung cabang yang dipilih. ^ adalah label yang dapat dilampirkan ke specifier komit dan berarti "komit". Dengan demikian, HEAD^ adalah commit sebelum yang sekarang, sama seperti master^ adalah fix sebelum akhir dari cabang utama.

Ini adalah bagian dari dokumentasi git-rev-parse yang menjelaskan semua cara untuk menentukan commit ( ^ hanyalah yang utama di antara banyak commit).

838
17 мая '10 в 3:52 2010-05-17 03:52 jawabannya diberikan oleh Jefromi pada 17 Mei '10 di 3:52 2010-05-17 03:52

Untuk menyimpan perubahan dari komit, Anda ingin membatalkan

 git reset --soft HEAD^ 

Untuk membatalkan perubahan dari komit yang ingin Anda batalkan

 git reset --hard HEAD^ 

Bisa juga dikatakan

 git reset --soft HEAD~2 

untuk mengembalikan 2 komitmen.

Sunting: seperti yang disebutkan dalam charsi, jika Anda berada di Windows, Anda harus memasukkan HEAD atau memberikan hash dalam tanda kutip.

 git reset --soft "HEAD^" git reset --soft "asdf" 
198
20 нояб. Balas diberikan oleh Alex Kinnee 20 Nov 2012-11-20 22:12 '12 pada jam 10:12 2012-11-20 22:12

Ini yang terakhir.

git reset --hard HEAD^ jika kamu juga ingin membuang perubahan yang kamu buat. git reset --soft HEAD^ menyimpan perubahan ke pohon yang bekerja.

82
17 мая '10 в 1:29 2010-05-17 01:29 jawabannya diberikan nfm 17 Mei, '10 pada 1:29 2010-05-17 01:29

Hati-hati, reset --hard juga akan menghapus modifikasi lokal Anda (tanpa komitmen).

 git reset --hard HEAD^ 

Catatan: jika Anda berada di windows, Anda harus menentukan HEAD ^ so

 git reset --hard "HEAD^" 
38
17 мая '10 в 1:28 2010-05-17 01:28 jawabannya diberikan tgeros 17 Mei '10 pada 1:28 2010-05-17 01:28

Perhatikan - jika Anda menggunakan ZSH dan Anda melihat kesalahan

 zsh: no matches found: HEAD^ 

Anda perlu menghindari ^

 git reset --soft HEAD\^ 
18
12 сент. jawabannya diberikan dax 12 Sep. 2013-09-12 15:54 '13 pada 15:54 2013-09-12 15:54

Jika Anda belum mengklik perubahan Anda, gunakan git reset --soft [Hash for one commit] untuk kembali ke komit tertentu. --soft memberitahu git untuk --soft perubahan (mis. tandai file seperti yang diubah). --hard memberitahu git untuk menghapus perubahan yang tertunda.

18
23 окт. Balas diberikan oleh Allen Kenney pada 23 Okt 2014-10-23 00:07 '14 pada 0:07 2014-10-23 00:07

Jika Anda melakukan salah cabang

Sementara di cabang yang salah:

  • git log -2 memberikan hash dari 2 commit terakhir, misalkan $prev dan $last
  • git checkout $prev perbaikan validasi
  • git checkout -b new-feature-branch membuat cabang baru untuk fungsi ini
  • git cherry-pick $last memperbaiki cabang dengan perubahan Anda

Kemudian Anda bisa menjalankan salah satu metode yang disarankan di atas untuk menghapus komit dari cabang pertama.

11
24 янв. jawabannya diberikan pemikiran indah 24 Jan 2015-01-24 04:26 '15 pada 4:26 2015-01-24 04:26

Hati-hati dengan ini.

Tetapi Anda dapat menggunakan perintah rebase

 git rebase -i HEAD~2 

Sebuah vi akan terbuka, dan yang perlu Anda lakukan hanyalah menghapus string yang dikomit. Anda juga dapat membaca instruksi yang ditampilkan dalam edisi yang benar @ vi , dalam mode ini, Anda dapat melakukan beberapa tindakan

1
12 авг. jawabannya diberikan Filipe 12 Agustus. 2014-08-12 17:44 '14 pada 17:44 2014-08-12 17:44

Pertanyaan lain tentang tag atau Ajukan Pertanyaan