Apakah ada perintah git untuk mengembalikan semua perubahan yang tidak dikomit di pohon dan indeks yang berfungsi dan juga menghapus file dan folder yang baru dibuat?
1071
Apakah ada perintah git untuk mengembalikan semua perubahan yang tidak dikomit di pohon dan indeks yang berfungsi dan juga menghapus file dan folder yang baru dibuat?
Jawaban:
Anda dapat menjalankan dua perintah ini:
sumber
git clean -i
untuk mode interaktif.git merge --abort
.Jika Anda ingin mengembalikan perubahan hanya di direktori kerja saat ini, gunakan
Dan sebelum itu, Anda dapat membuat daftar file yang akan dikembalikan tanpa benar-benar melakukan tindakan apa pun, hanya untuk memeriksa apa yang akan terjadi, dengan:
sumber
git reset --hard
?Gunakan "git checkout - ..." untuk membuang perubahan pada direktori yang berfungsi
atau
menghapus semua perubahan yang dibuat untuk file yang tidak dipentaskan dalam status git misalnya
sumber
git checkout -- *
tidak berfungsi untuk saya kecuali saya berada di direktori tempat file yang diubah berada. Untuk checkout semua file di seluruh repositori, Anda harus melakukannyagit checkout -- :/
git checkout -- *
, bintang digantikan oleh Shell, dengan semua file dan direktori di direktori saat ini. Jadi harus masuk dalam subdirektori. Ini bekerja untuk saya. Tapi terima kasih untuk menyoroti sintaks ": /" yang menurut saya lebih bersih.Salah satu cara non-sepele adalah menjalankan dua perintah ini:
git stash
Ini akan memindahkan perubahan Anda ke simpanan, membawa Anda kembali ke status KEPALAgit stash drop
Ini akan menghapus simpanan terbaru yang dibuat dalam perintah terakhir.sumber
fatal: git-write-tree: error building trees Cannot save the current index state
tidak membantu, file baru tetap ada. Apa yang saya lakukan adalah benar-benar menghapus semua pohon yang bekerja dan kemudian
Lihat " Bagaimana cara menghapus direktori kerja lokal saya di git? " Untuk saran untuk menambahkan
-x
opsi untuk membersihkan:Catatan
-x
bendera akan menghapus semua file diabaikan oleh Git jadi hati-hati (lihat diskusi dalam jawaban saya lihat).sumber
Saya pikir Anda dapat menggunakan perintah berikut:
git reset --hard
sumber
Harap dicatat bahwa mungkin masih ada file yang tampaknya tidak akan hilang - mereka mungkin belum diedit, tetapi git mungkin telah menandai mereka sebagai sedang diedit karena perubahan CRLF / LF. Lihat apakah Anda telah membuat beberapa perubahan
.gitattributes
baru-baru ini.Dalam kasus saya, saya telah menambahkan pengaturan CRLF ke
.gitattributes
file dan semua file tetap dalam daftar "file yang dimodifikasi" karena ini. Mengubah pengaturan .gitattributes membuatnya menghilang.sumber
Jika Anda memiliki perubahan yang tidak dikomit (hanya di copy pekerjaan Anda) yang ingin Anda kembalikan ke salinan di komit terbaru Anda, lakukan hal berikut:
sumber
git rm filename
, dan tidak berfungsi.error: pathspec 'filename' did not match any file(s) known to git.
git rm
adalahgit checkout master -- filename
Git 2.23 memperkenalkan
git restore
perintah untuk mengembalikan file pohon yang berfungsi.https://git-scm.com/docs/git-restore
Untuk mengembalikan semua file di direktori saat ini
Jika Anda ingin mengembalikan semua file sumber C agar sesuai dengan versi dalam indeks, Anda bisa melakukannya
sumber
Anda bisa menggunakan perintah git berikut yang dapat mengembalikan kembali semua perubahan yang tidak dikomit yang dibuat dalam repositori Anda:
Contoh:
sumber
Saya biasanya menggunakan cara ini yang bekerja dengan baik:
sumber
Jalan yang aman dan jauh:
git branch todelete
git checkout todelete
git add .
git commit -m "I did a bad thing, sorry"
git checkout develop
git branch -D todelete
sumber
Menggunakan:
Sebagai contoh:
sumber