Apakah mungkin untuk menghapus stage perubahan git yang dipentaskan (tidak dilakukan) terakhir ? Misalkan ada banyak file di cabang saat ini, beberapa dipentaskan, beberapa tidak. Pada titik tertentu, beberapa programmer bodoh secara tidak sengaja dieksekusi:
git add -- .
...dari pada:
git checkout -- .
Bisakah programmer ini menghapus perubahan terakhirnya dengan perintah git ajaib ? Atau haruskah dia melakukan sebelum bereksperimen sejak awal?
git add
perintah terakhir , terutama untuk file yang telah melakukan perubahan, dan memiliki beberapa perubahan yang harus dibatalkan, tidak dipentaskan. Tidak bisa mengatakan pertanyaan lain tidak terkait.Jawaban:
Anda bisa menggunakannya
git reset
. Ini akan 'unstage' semua file yang Anda tambahkan setelah komit terakhir Anda.Jika Anda ingin menghapus hanya beberapa file, gunakan
git reset -- <file 1> <file 2> <file n>
.Juga dimungkinkan untuk menghapus beberapa perubahan dalam file dengan menggunakan
git reset -p
.sumber
-p
beralih. Terima kasih! :)Anda tidak dapat membatalkan git add terbaru , tetapi Anda dapat membatalkan semua
add
sejak komit terakhir.git reset
tanpa argumen komit me-reset indeks (unstage perubahan bertahap):sumber
reset
satu file, atau gunakanreset -p
untuk membatalkan tahapan sebongkah tertentu.Jadi jawaban sebenarnya
sebenarnya: Tidak, Anda tidak dapat berhenti panggung hanya yang terakhir
git add
.Itu jika kita menafsirkan pertanyaan seperti dalam situasi berikut:
File awal:
Perubahan pertama diikuti oleh
git add
:Perubahan kedua diikuti oleh
git add
:Dalam hal ini,
git reset -p
tidak akan membantu, karena granularity terkecilnya adalah garis.git
tidak tahu bahwa tentang kondisi antara:lagi.
sumber
Anda dapat menggunakan
git reset
(lihat dokumen )sumber
Pada tanggal git meminta:
use "git rm --cached <file>..." to unstage
jika file tidak ada dalam repo. Itu menghapus stage file yang menyimpannya di sana.use "git reset HEAD <file>..." to unstage
jika file dalam repo, dan Anda menambahkannya sebagai diubah. Itu membuat file seperti apa adanya, dan menghapus panggung mereka.git add --
Sepengetahuan saya Anda tidak dapat membatalkan tetapi Anda dapat menghapus daftar file seperti yang disebutkan di atas.sumber
Hapus file dari indeks, tetapi tetap versi dan kiri dengan perubahan yang tidak dikomit dalam copy pekerjaan:
Setel ulang file ke status terakhir dari HEAD, urungkan perubahan dan hapus dari indeks:
Ini diperlukan karena
git reset --hard HEAD
tidak akan berfungsi dengan file tunggal.Hapus
<file>
dari indeks dan versi, menjaga file tidak versi dengan perubahan dalam copy pekerjaan:Hapus
<file>
dari copy pekerjaan dan versi sepenuhnya:sumber
Jika Anda ingin menghapus semua file yang ditambahkan dari git untuk komit
Jika Anda ingin menghapus satu file
sumber
Kamu bisa memakai
untuk membatalkan file lokal yang baru ditambahkan
untuk membatalkan perubahan untuk file tertentu
sumber
Bergantung pada ukuran dan skala yang sulit, Anda bisa membuat cabang (sementara) awal dan melakukan pekerjaan saat ini di sana.
Kemudian beralih ke dan checkout cabang asli Anda, dan pilih file yang sesuai dari awal komit.
Setidaknya Anda akan memiliki catatan permanen dari status saat ini dan sebelumnya untuk bekerja (sampai Anda menghapus cabang awal itu).
sumber