Git membatalkan semua perubahan yang tidak dikomit atau tidak disimpan

Saya mencoba untuk membatalkan semua perubahan sejak komit terakhir. Saya mencoba git reset --hard dan git reset --hard HEAD setelah melihat pesan ini . Saya menjawab bahwa kepala sekarang di 18c3773 ... tetapi ketika saya melihat sumber lokal saya, semua file masih ada. Apa yang saya lewatkan?

419
28 дек. ditetapkan oleh Antarr Byrd 28 Des. 2012-12-28 23:46 '12 pada 11:46 2012-12-28 23:46
@ 6 balasan
  • Ini akan menonaktifkan semua file yang bisa Anda masukkan dengan git add :

     git reset 
  • Ini akan menghasilkan pengembalian semua perubahan lokal yang tidak dikomit (harus dilakukan di root repo):

     git checkout . 

    Anda juga dapat mengembalikan perubahan yang tidak dikomit hanya ke file atau direktori tertentu:

     git checkout [some_dir|file.txt] 

    Cara lain untuk membatalkan semua perubahan yang tidak dikomit (lebih lama dari jenisnya, tetapi berfungsi dari subdirektori apa pun):

     git reset --hard HEAD 
  • Ini akan menghapus semua file lokal yang tidak dapat dimainkan, jadi hanya git file yang dipantau yang tersisa:

     git clean -fdx 

    PERINGATAN: -x juga akan menghapus semua file yang diabaikan!


Untuk meringkas: mengeksekusi perintah-perintah berikut pada dasarnya setara dengan git clone baru dari sumber asli (tetapi tidak memuat u>

 git reset git checkout . git clean -fdx 

Penggunaan khas untuk ini adalah dalam skrip build, ketika Anda harus memastikan pohon Anda benar-benar bersih - tidak memiliki perubahan atau file objek yang dibuat secara lokal atau rakitan artefak, dan Anda ingin itu bekerja dengan sangat cepat dan tidak mengkloning kembali seluruh repositori masing-masing kali

856
29 дек. jawabannya diberikan oleh mvp 29 Desember. 2012-12-29 00:04 '12 pada 0:04 2012-12-29 00:04

Jika Anda ingin membatalkan , semua perubahan yang tidak dikomit akan dijalankan:

 git stash git stash drop 

Jika Anda memiliki file yang belum diproses (periksa dengan menjalankan git status ), Anda dapat menghapusnya dengan menjalankan:

 git clean -fdx 

git stash menciptakan git stash baru, yang akan menjadi simpanan @ {0} . Jika Anda ingin memeriksa terlebih dahulu, Anda dapat menjalankan git stash list untuk melihat daftar prangko Anda. Akan terlihat seperti ini:

 stash@{0}: WIP on rails-4: 66c8407 remove forem residuals stash@{1}: WIP on master: 2b8f269 Map qualifications stash@{2}: WIP on master: 27a7e54 Use non-dynamic finders stash@{3}: WIP on blogit: c9bd270 some changes 

Setiap stempel dinamai setelah komit komit sebelumnya.

71
18 июля '14 в 23:59 2014-07-18 23:59 Jawaban diberikan oleh Abram 18 Juli '14 pukul 11:59 2014-07-18 23:59

ada juga git stash - yang “macet” perubahan lokal Anda dan dapat diterapkan kembali nanti atau reset jika tidak diperlukan lagi

informasi kunci lebih lanjut

14
29 дек. Jawabannya diberikan oleh keshav pada 29 Desember. 2012-12-29 00:17 '12 pada 0:17 2012-12-29 00:17

Saya menggunakan struktur kode sumber .... Anda dapat membuat semua perubahan tanpa komitmen menggunakan dua >

1) hanya perlu mengatur u>

2019

Bagi mereka yang datang ke sini, jika mereka dapat membatalkan git clean -f -d , yang dengannya file yang dibuat di eclipse dihapus,

Anda dapat melakukan hal yang sama dari antarmuka pengguna menggunakan tautan "restore from local history": Pulihkan dari histori lokal

3
28 авг. Balas diberikan oleh Abdul Rahman K 28 Agustus. 2015-08-28 12:31 '15 jam 12:31 malam 2015-08-28 12:31

Berdasarkan penelitian saya, saya menerima ringkasan di bawah ini.

KONDISI PERALIHAN DARI SATU KOMITE KE KOMITE BARU

 0. last commit,ie HEAD commit 1. Working tree changes, file/directory deletion,adding,modification. 2. The changes are staged in index 3. Staged changes are committed 

TINDAKAN UNTUK PERALIHAN NEGARA:

 0->1: manual file/directory operation 1->2: git add . 2->3: git commit -m "xxx" 

PERIKSA DIFF:

 0->1: git diff 0->2: git diff --cached 0->1, and 0->2: git diff HEAD last last commit->last commit: git diff HEAD^ HEAD 

KOMITE TERAKHIR TERBUKA:

 2->1: git reset 1->0: git checkout . #only for tracked files/directories(actions include modifying/deleting tracked files/directories) 1->0: git clean -fdx #only for untracked files/directories(action includes adding new files/directories) 2->1, and 1->0: git reset --hard HEAD 

GIT CLONE EQUIVALENT TANPA MENGUNDUH APA SAJA

 git reset; git checkout .; git clean -fdx 
0
01 июля '16 в 11:54 2016-07-01 11:54 jawabannya diberikan Zii 01 Juli '16 di 11:54 2016-07-01 11:54

Pertanyaan lain tentang tag atau Ajukan Pertanyaan