Bagaimana cara menghapus file lokal (tidak dilacak) dari pohon kerja Git saat ini?

Bagaimana cara menghapus file lokal yang tidak perlu dari struktur pohon saat ini?

6113
14 сент. Set hanya baca 14 Sep. 2008-09-14 12:06 '08 pada jam 12:06 2008-09-14 12:06
@ 36 jawaban
  • 1
  • 2

Menurut dokumentasi git clean

Hapus file yang tidak perlu dari pohon kerja


>-n :

 git clean -n 

>Hati - hati: ini akan menghapus file :

 git clean -f 
  • Untuk menghapus direktori, jalankan git clean -f -d atau git clean -fd
  • Untuk menghapus file yang diabaikan, jalankan git clean -f -X atau git clean -fX
  • Untuk menghapus file yang diabaikan dan tidak diabaikan, jalankan git clean -f -X atau git clean -fX

Catat perbedaan peristiwa pada X untuk dua tim terakhir.

Jika clean.requireForce diatur ke "true" (default) dalam konfigurasi Anda, Anda harus menentukan -f , jika tidak, tidak akan terjadi apa-apa.

Lihat dokumentasi git-clean lagi untuk informasi lebih lanjut.

Fungsi

-f

- kekuatan

Jika variabel konfigurasi Git clean.requireForce tidak disetel ke false, Git clean akan menolak untuk memulai kecuali -f, -n, atau -i ditentukan.

-x

Jangan gunakan aturan abaikan standar yang dibaca dari .gitignore (untuk setiap direktori) dan $ GIT_DIR / info / kecualikan, tetapi tetap gunakan aturan abaikan yang ditentukan dengan opsi -e. Ini memungkinkan Anda untuk menghapus semua file yang tidak diproses, termasuk perakitan produk. Ini dapat digunakan (mungkin bersamaan dengan reset Git) untuk membuat direktori kerja yang utuh untuk memeriksa bangunan yang bersih.

-X

Hapus hanya file yang diabaikan oleh Git. Ini bisa berguna untuk memulihkan semuanya dari awal, tetapi menyimpan file yang dibuat secara manual.

-n

- kering

Bahkan, jangan menghapus apa pun, cukup tunjukkan apa yang akan dilakukan.

-d

Hapus direktori yang tidak perlu selain file mentah. Jika direktori yang tidak ditandatangani dikelola oleh repositori Git lain, itu tidak dihapus secara default. Gunakan opsi -f dua kali jika Anda benar-benar ingin menghapus direktori seperti itu.

7973
15 сент. Balas diberikan oleh Andreas Ericsson 15 Sep 2008-09-15 20:32 '08 pada 8:32 malam 2008-09-15 20:32

Gunakan git clean -f -d untuk memastikan direktori juga dihapus.

border=0

Kemudian Anda dapat memeriksa apakah file Anda benar-benar melewati git status .

866
26 мая '09 в 23:59 2009-05-26 23:59 jawabannya diberikan oleh robert.berger pada 26 Mei 2009 di 23:59 2009-05-26 23:59

Saya terkejut bahwa tidak ada yang menyebutkan ini sebelumnya:

 git clean -i 

Ini berarti interaktivitas, dan Anda mendapatkan gambaran umum singkat tentang apa yang akan dihapus, menawarkan kepada Anda opsi untuk menyertakan / mengecualikan file yang terpengaruh. Secara umum, ini masih lebih cepat daripada menjalankan --dry-run wajib sebelum membersihkan nyata.

Anda harus membuang -d jika Anda juga ingin menjaga folder kosong. Pada akhirnya, ia membuat nama samaran yang bagus:

 git iclean 

Dengan demikian, implementasi manual tambahan dari perintah interaktif dapat membuat bosan bagi pengguna tingkat lanjut. Hari ini saya hanya menggunakan git clean -fd telah disebutkan

427
30 дек. Jawabannya diberikan oleh SystematicFrank 30 Des. 2013-12-30 23:12 '14 pukul 11:12 2013-12-30 23:12
388
14 сент. Jawabannya diberikan oleh Fire Lancer pada 14 September. 2008-09-14 12:09 '08 pada 12:09 2008-09-14 12:09

Jika direktori yang tidak dilacak adalah repositori git Anda sendiri (misalnya, sub-modul), Anda perlu menggunakan -f dua kali:

git clean -d -f -f

213
25 янв. Balas diberikan oleh Michał Szajbe pada 25 Jan 2013-01-25 15:24 '13 pada 15:24 2013-01-25 15:24

Cara mudah untuk menghapus file yang tidak dilacak

Untuk menghapus semua file yang tidak dilacak, cara mudahnya adalah pertama - tama menambahkan semuanya dan mengatur u> repositori, seperti yang ditunjukkan di bawah ini.

 git add --all git reset --hard HEAD 

156
03 июня '16 в 15:16 2016-06-03 15:16 Jawaban diberikan oleh Thanga pada 03 Juni '16 di 15:16 2016-06-03 15:16

Saya suka git stash push -u karena Anda dapat membatalkan semuanya dengan git stash pop .

EDIT: Saya juga menemukan cara untuk menampilkan file yang tidak bisa dilacak dalam cache (misalnya, git show stash@{0}^3 ) encoreci.net.site/questions/507 / ...

EDIT2: git stash save tidak digunakan lagi karena push . Terima kasih @ script serigala.

121
11 янв. Hiroshi menjawab 11 Jan 2014-01-11 03:41 '14 pada 3:41 2014-01-11 03:41

Inilah yang selalu saya gunakan:

 git clean -fdx 

Untuk proyek yang sangat besar, Anda dapat menjalankannya beberapa kali.

98
25 нояб. jawabannya diberikan oleh Oscar Fraxedas pada 25 November. 2013-11-25 17:16 '13 pada 17:16 2013-11-25 17:16

git-clean adalah apa yang Anda cari. Ini digunakan untuk menghapus file yang tidak diproses dari pohon kerja.

83
14 сент. Jawabannya diberikan Espo 14 Sep. 2008-09-14 12:08 '08 pada 12:08 2008-09-14 12:08

Jika Anda ingin menghapus file yang tidak ditandatangani dari subdirektori tertentu,

 git clean -f {dir_path} 

Dan cara gabungan untuk menghapus file yang tidak dapat direproduksi / file dan file yang diabaikan.

 git clean -fxd {dir_path} 

setelah itu Anda hanya akan memodifikasi file dalam git status .

73
24 сент. Jawabannya diberikan Vijay C 24 sep. 2013-09-24 09:28 '13 pada 9:28 2013-09-24 09:28

git clean -fd menghapus direktori

git clean -fX menghapus file yang diabaikan

git clean -fX menghapus file yang diabaikan dan tidak diabaikan

Anda dapat menggunakan semua opsi di atas dalam kombinasi sebagai

git clean -fdXx

Lihatlah manual git untuk bantuan lebih lanjut.

48
22 янв. Jawabannya diberikan Pooja 22 Jan 2015-01-22 09:33 '15 pada 9:33 2015-01-22 09:33

Hapus semua folder dan file yang tidak perlu dalam repo + sub-modul ini

Ini membawa Anda ke kondisi yang sama dengan klon baru.

 git clean -ffdx 

Hapus semua folder dan file tambahan dalam repo ini, tetapi bukan submodulanya.

 git clean -fdx 

Hapus hanya folder tambahan, tetapi bukan file (misalnya, folder build)

 git clean -fd 

Hapus folder yang tidak perlu + file yang hi>

Jika file belum diabaikan dan belum terdaftar, itu tetap ada. Catat modal X.

 git clean -fdX 

Mode interaktif baru

 git clean 
37
12 февр. Jawabannya diberikan oleh Shital Shah pada 12 Februari. 2017-02-12 11:33 '17 pada 11:33 2017-02-12 11:33

OK, menghapus file dan folder yang tidak perlu tidak terlacak itu mudah, menggunakan git pada baris perintah, lakukan saja seperti ini:

 git clean -fd 

Periksa sebelum melakukan ini, karena akan menghapus file dan folder tanpa membuat riwayat ...

Juga dalam hal ini -f berarti kekuatan, dan -d berarti direktori ...

Jadi, jika Anda ingin menghapus hanya file, Anda hanya dapat menggunakan -f :

 git clean -f 

Jika Anda ingin menghapus (direktori) dan file, Anda hanya dapat menghapus direktori dan file yang tidak dipantau, misalnya:

 git clean -fd 

Anda juga dapat menggunakan flag -x untuk memasukkan file yang diabaikan oleh git. Ini akan berguna jika Anda ingin menghapus semuanya.

Dan menambahkan flag -i menyebabkan git meminta izin untuk menghapus file satu per satu saat bepergian.

Jika Anda tidak yakin dan ingin memeriksa semuanya terlebih dahulu, tambahkan flag -n .

Gunakan -q jika Anda tidak ingin melihat laporan apa pun setelah penghapusan berhasil.

Saya juga membuat gambar di bawah ini untuk membuatnya lebih mudah diingat, terutama saya telah melihat berapa banyak orang bingung -f dengan membersihkan folder atau entah bagaimana membingungkannya!


2019

Paling baik digunakan: git clean

 git clean -d -x -f 

Ini menghapus file yang tidak perlu, termasuk direktori (-d) dan file yang diabaikan oleh git (-x) .

Juga ganti argumen -f dengan -n untuk menjalankan mode interaktif dry-run atau -i , dan itu akan memberi tahu Anda apa yang akan dihapus.

32
16 апр. Jawabannya diberikan Chhabilal 16 April. 2015-04-16 09:49 '15 pada 9:49 2015-04-16 09:49

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/arsdumpgenerator/inspector/ [y/N]? y Remove src/com/arsdumpgenerator/manifest/ [y/N]? y Remove src/com/arsdumpgenerator/s3/ [y/N]? y Remove tst/com/arsdumpgenerator/manifest/ [y/N]? y Remove tst/com/arsdumpgenerator/s3/ [y/N]? y 

-i untuk interaktif
-untuk kekuatan
-d untuk direktori
-x untuk file yang diabaikan (tambahkan jika perlu)

Catatan: Tambahkan -n atau - keringkan untuk hanya memeriksa apa yang akan dilakukan.

20
02 марта '17 в 23:09 2017-03-02 23:09 jawabannya diberikan bit_cracker007 02 Maret '17 pada 23:09 2017-03-02 23:09

Bagi saya, hanya setelah bekerja:

 git clean -ffdx 

Dalam semua kasus lain, saya menerima pesan "Melewati Direktori" untuk beberapa subdirektori.

15
16 авг. jawabannya diberikan rahul286 16 Agustus. 2016-08-16 18:29 '16 pada 6:29 malam 2016-08-16 18:29

git clean -f -d -x $(git rev-parse --show-cdup) digunakan murni untuk direktori root, di mana pun Anda menyebutnya di pohon direktori repositori. Saya menggunakannya sepanjang waktu, karena itu tidak memaksa Anda untuk meninggalkan folder di mana Anda saat ini bekerja, dan memungkinkan Anda untuk menghapus dan memperbaiki hak dari tempat di mana Anda berada.

Pastikan -f , -d , -x sesuai dengan kebutuhan Anda:

 -d Remove untracked directories in addition to untracked files. If an untracked directory is managed by a different Git repository, it is not removed by default. Use -f option twice if you really want to remove such a directory. -f, --force If the Git configuration variable clean.requireForce is not set to false, git clean will refuse to delete files or directories unless given -f, -n or -i. Git will refuse to delete directories with .git sub directory or file unless a second -f is given. This affects also git submodules where the storage area of the removed submodule under .git/modules/ is not removed until -f is given twice. -x Don't use the standard ignore rules read from .gitignore (per directory) and $GIT_DIR/info/exclude, but do still use the ignore rules given with -e options. This allows removing all untracked files, including build products. This can be used (possibly in conjunction with git reset) to create a pristine working directory to test a clean build. 

Ada beberapa flag lain, cukup pilih git clean --help .

15
02 дек. Jawaban diberikan oleh Nikita Leonov 02 Des 2015-12-02 20:57 '15 pada 20:57 2015-12-02 20:57

Jika Anda hanya ingin menghapus file yang terdaftar sebagai tidak dicentang oleh 'status git'

 git stash save -u git stash drop "stash@{0}" 

Saya lebih suka "git clean" ini, karena "git clean" akan menghapus file yang diabaikan oleh git, jadi build Anda berikutnya harus membangun kembali semuanya dan Anda juga mungkin kehi>

13
02 марта '16 в 5:09 2016-03-02 05:09 jawabannya diberikan jazzdev 02 Maret '16 pada 5:09 2016-03-02 05:09

Kelayakan untuk situasi seperti itu saya baru saja menemukan dan mencoba (yang bekerja sangat baik):

 git add . git reset --hard HEAD 
Perhatian Pastikan untuk menyalin perubahan apa pun yang diperlukan (bahkan ke file yang tidak tulus) sebelum melakukan ini .
13
21 февр. jawabannya diberikan kepada thybzi 21 Feb. 2016-02-21 20:29 '16 pada 8:29 malam 2016-02-21 20:29

Untuk mengetahui apa yang akan dihapus sebelum penghapusan aktual:

git clean -d -n

Ini akan menampilkan sesuatu seperti:

Menghapus sample.txt

Untuk menghapus semua yang tercantum dalam output dari perintah sebelumnya:

git clean -d -f

Ini akan menampilkan sesuatu seperti:

Hapus instalan sample.txt

10