Git: Bagaimana cara menghapus semua file yang tidak dilacak?

40

Saya menggunakan Git untuk kontrol versi. Sekarang saya ingin menghapus semua file di repositori di komputer lokal saya yang tidak dilacak.

Saya bisa menggunakan

git status

untuk mendaftar file-file ini, tetapi bagaimana saya bisa menghapus semuanya?

RoflcoptrException
sumber
1
Tidak bisakah Anda memeriksa semua file ke tempat lain di komputer Anda dan kemudian menghapus versi yang lama?
Nifle
1
Tentu saja saya bisa, tetapi bukankah ada cara yang lebih sederhana?
RoflcoptrException

Jawaban:

55

Jika Anda mengabaikannya, gunakan git clean -xf. Anda dapat melakukannya git clean -dftetapi itu juga akan menghapus direktori yang tidak dilacak. Gunakan -nuntuk lari kering.

Lihat membersihkan tanpa dilacak

icecurtain
sumber
3
-x mengabaikan
pengabaian
8
-xfakan menghapus dan file yang diabaikan dan ini mungkin BUKAN apa yang Anda inginkan. Gunakan -nfdan lanjutkan dengan hati-hati. Lihat: stackoverflow.com/questions/61212/…
Mr_and_Mrs_D
2
Ingat, ini dapat menghapus folder lingkungan / IDE Anda (misalnya .vagrant atau .idea (phpstorm))
timhc22
1
AWAS! file gitignored akan dihapus selamanya. -100
sepehr
5
git bersih -f
grawity
sumber
8
Mungkin masuk akal untuk menambahkan arti perintah itu untuk membuat jawaban ini mandiri.
NN
5

Pendekatan interaktif pengguna:

git clean -i -fd

Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/amazon/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/s3/ [y/N]? y

-i untuk interaktif
-f untuk file
-d untuk direktori

Catatan: Tambahkan -n atau --dry-jalankan untuk memeriksa apa yang akan dilakukan.

bit_cracker007
sumber
3

Ada kehalusan menyebutkan tentang git clean -fvis-a-vis file dan direktori yang tidak terlacak. Jika Anda memiliki direktori tidak terlacak yang berisi file yang, fortiori, tidak terlacak, maka git clean -fTIDAK akan menghapus file-file yang tidak dilacak.

Dengan kata lain, BUKAN selalu kasus yang git clean -fakan menghapus semua file yang tidak terlacak. Penjelasan yang lebih baik git clean -fadalah bahwa ia menghapus semua file yang tidak terlacak yang tidak ada di direktori yang tidak dilacak.

git clean -f -d harus digunakan untuk menghapus file yang tidak dilacak yang ada di direktori yang tidak dilacak dan tampaknya tidak ada cara untuk menghapus semua file yang tidak dilacak tanpa juga menghapus direktori yang tidak dilacak yang hanya berisi file yang tidak dilacak.

Gunakan git clean -f -d -nuntuk BENAR-BENAR melihat apa yang ingin Anda lakukan untuk mengembalikan direktori kerja Anda menjadi seperti apa tanpa file yang tidak terlacak. Kemudian gunakan git clean -f -duntuk melakukan itu.

Dennis G Allard
sumber