Bagaimana cara menghapus file dari indeks (= area staging = cache) tanpa menghapusnya dari sistem file?
Bagaimana cara menghapus file dari indeks (= area staging = cache) tanpa menghapusnya dari sistem file?
Jawaban:
Kamu ingin:
git rm --cached [file]
Jika Anda menghilangkan --cachedopsi, itu juga akan menghapusnya dari pohon yang berfungsi. git rmsedikit lebih aman daripada git reset, karena Anda akan diperingatkan jika konten yang dipentaskan tidak cocok dengan ujung cabang atau file pada disk. (Jika tidak, Anda harus menambahkan --force.)
git rm --cacheduntuk menghapusnya dari repo, tambahkan file atau direktori yang relevan ke .gitignore, stage dan komit seperti biasa. Mereka akan hilang dari repo tetapi tetap tidak tersentuh di pohon lokal Anda, dan Anda tidak akan sengaja memeriksanya lagi.
Ini harus menghapus stage <file> untuk Anda (tanpa menghapus atau memodifikasi file):
git reset <file>
HEAD.
HEAD!
git reset HEAD <file>
untuk menghapus file tertentu dari indeks.
dan
git reset HEAD
untuk menghapus semua file yang diindeks.
Bergantung pada alur kerja Anda, ini mungkin jenis hal yang jarang Anda butuhkan sehingga tidak ada gunanya mencoba mencari solusi baris perintah (kecuali Anda kebetulan bekerja tanpa antarmuka grafis untuk beberapa alasan).
Cukup gunakan salah satu alat berbasis GUI yang mendukung manajemen indeks, misalnya:
git gui <- menggunakan framework windowing Tk - style yang mirip dengan gitkgit cola <- antarmuka GUI yang lebih modernIni memungkinkan Anda memindahkan file masuk dan keluar dari indeks dengan titik-dan-klik. Mereka bahkan memiliki dukungan untuk memilih dan memindahkan sebagian file (perubahan individu) ke dan dari indeks.
Bagaimana dengan perspektif yang berbeda: Jika Anda mengacaukan saat menggunakan salah satu dari perintah yang disarankan, agak samar,:
git rm --cached [file]git reset HEAD <file>... Anda memiliki peluang nyata untuk kehilangan data - atau setidaknya membuatnya sulit ditemukan. Kecuali Anda benar-benar perlu melakukan ini dengan frekuensi sangat tinggi, menggunakan alat GUI kemungkinan lebih aman .
Berdasarkan komentar dan suara, saya menyadari bahwa banyak orang menggunakan indeks setiap saat. Bukan saya. Begini caranya:
git commit -agit commit (list of files)git commit -alalu ubah melaluigit guigit difftool --dir-diff --tool=meldgit commit -a. Ketika saya menjawab pertanyaan ini, itu karena saya telah melakukan " inverse cherry pick " yang eksotis yang menempatkan file dalam indeks untuk Anda, tetapi saya ingin mengedit file sebelum melakukan. Saya mengambil file dari indeks sementara saya mengeditnya sehingga diffs akan bekerja seperti biasa.
rmlangsung menggunakan tetapi saya pikir beralih cabang tidak akan membunuh folder yang diabaikan . tapi ... Saya menggunakan alat github "berbasis gui" yang cukup bagus untuk saya dan mendukung beberapa manajemen indeks kecuali itu tidak mendukung ini. jadi apa, haruskah saya menggunakan 2 gui untuk penggunaan yang sempit? masih tidak setuju dengan jawaban.