Bagaimana anda hapus tidak terlacak file lokal dari kerja anda saat ini pohon?
Sesuai Git Dokumentasi git clean
Hapus terpantau file dari tree kerja
Langkah 1 adalah untuk menunjukkan apa yang akan dihapus dengan menggunakan -n
pilihan:
# Print out the list of files which will be removed (dry run)
git clean -n
Bersih Langkah - hati-hati: ini akan menghapus file:
# Delete the files from the repository
git clean -f
bersih -f -d
atau git bersih -fd
bersih -f -X
atau git bersih -fX
bersih -f -x
atau git bersih -fx
Catatan dalam kasus perbedaan pada X
untuk yang terakhir dua perintah.
Jika bersih.requireForce
diatur ke "benar" (default) dalam konfigurasi anda, salah satu kebutuhan untuk menentukan -f
jika tidak ada yang benar-benar akan terjadi.
Lagi lihat git-bersih
docs untuk informasi lebih lanjut.
-f
,--force
Jika Git konfigurasi variabel bersih.requireForce tidak diatur untuk palsu, git bersih akan menolak untuk menjalankan kecuali diberi
-f
,-n
atauaku
.
-x
Jangan gunakan standar mengabaikan aturan baca dari .gitignore (per direktori) dan
$GIT_DIR/info/mengecualikan
, namun masih menggunakan mengabaikan aturan yang diberikan dengan-e
pilihan. Hal ini memungkinkan menghapus semua terpantau file, termasuk membangun produk. Hal ini dapat digunakan (mungkin dalam hubungannya dengan git reset) untuk membuat murni direktori kerja untuk menguji bersih membangun.
-X
Menghapus hanya file yang diabaikan oleh Git. Ini mungkin berguna untuk membangun kembali semuanya dari awal, tapi tetap dibuat secara manual file.
-n
,--dry-run
tidak benar-benar menghapus apa-apa, hanya menunjukkan apa yang akan dilakukan.
-d
Hapus terpantau direktori selain tidak terlacak file. Jika direktori terpantau dikelola oleh berbagai repositori Git, itu adalah tidak dihapus secara default. Gunakan
-f
pilihan dua kali jika anda benar-benar ingin menghapus suatu direktori.
Menggunakan git bersih -f -d
untuk memastikan bahwa direktori juga dihapus.
-n, -dry-run
Tidak benar-benar menghapus apa-apa, hanya menunjukkan apa yang akan dilakukan.
-d
Menghapus terpantau direktori selain tidak terlacak file. Jika sebuah direktori terpantau dikelola oleh berbagai repositori Git, itu tidak dihapus secara default. Gunakan opsi-f dua kali jika anda benar-benar ingin menghapus suatu direktori.
Anda kemudian dapat memeriksa apakah file anda benar-benar pergi dengan git status
.
Saya terkejut tidak ada yang menyebutkan ini sebelumnya:
git clean -i
Yang merupakan singkatan dari interaktif dan anda akan mendapatkan gambaran singkat dari apa yang akan dihapus menawarkan anda kemungkinan untuk sertakan/kecualikan file yang terkena. Secara keseluruhan, masih lebih cepat daripada menjalankan wajib --dry-run
sebelum pembersihan nyata.
Anda akan memiliki untuk melemparkan -d
jika anda juga ingin merawat folder kosong. Pada akhirnya, itu membuat untuk yang bagus alias:
git iclean
Bahwa menjadi kata, ekstra tangan memegang perintah interaktif dapat melelahkan bagi pengguna berpengalaman. Hari ini saya hanya menggunakan yang sudah disebutkan git bersih -fd
Untuk menghapus semua terpantau file, sederhana caranya adalah dengan menambahkan semua dari mereka pertama dan reset repo seperti di bawah ini
git add --all
git reset --hard HEAD
Saya suka git simpanan push-u
karena anda dapat membatalkan mereka semua dengan git simpanan pop
.
EDIT: saya Juga menemukan cara untuk menunjukkan terpantau file simpanan (misalnya git show simpanan@{0}^3
) https://stackoverflow.com/a/12681856/338986
EDIT2: git simpanan menyimpan
adalah usang dalam mendukung push
. Terima kasih @script-serigala.
Jika diperlukan untuk menghapus terpantau file dari subdirektori tertentu,
git clean -f {dir_path}
Dan cara gabungan untuk menghapus terpantau dir/file dan file diabaikan.
git clean -fxd {dir_path}
setelah ini anda akan memiliki file yang diubah hanya dalam git status
.
git bersih -fd
menghapus direktori
git bersih -fX
menghilangkan diabaikan file
git bersih -fx
menghilangkan diabaikan dan un-file diabaikan
dapat digunakan semua pilihan di atas dalam kombinasi sebagai
git bersih -fdXx
cek git manual untuk bantuan lebih lanjut
Menghapus semua ekstra folder dan file di repo ini + submodul
Ini membuat anda dalam keadaan segar clone.
git clean -ffdx
Menghapus semua ekstra folder dan file di repo ini tapi tidak submodul
git clean -fdx
Hanya menghapus folder-folder tambahan tapi tidak file (ex. membangun folder)
git clean -fd
Menghapus ekstra folder + file diabaikan (tapi tidak ada file baru ditambahkan)
Jika file tidak't diabaikan dan belum diperiksa-dalam kemudian tetap. Catatan modal X.
git clean -fdX
*New modus interaktif**
git clean
OK, menghapus yang tidak diinginkan tidak terlacak file dan folder mudah menggunakan git` di baris perintah, lakukan saja seperti ini:
git clean -fd
Double check sebelum melakukan hal itu karena akan menghapus file dan folder tanpa membuat sejarah...
Juga dalam kasus ini, -f
adalah singkatan dari kekuatan dan -d
singkatan dari direktori...
Jadi, jika anda ingin menghapus hanya file, anda dapat menggunakan -f
hanya:
git clean -f
Jika anda ingin menghapus(direktori) dan file, anda dapat menghapus hanya terpantau direktori dan file-file seperti ini:
git clean -fd
Juga, anda dapat menggunakan -x
bendera termasuk file yang diabaikan oleh git. Ini akan sangat membantu jika anda ingin menghapus semuanya.
Dan menambahkan -i
bendera, membuat git meminta anda untuk izin untuk menghapus file satu per satu pergi.
Jika anda tidak yakin dan ingin memeriksa hal-hal pertama, tambahkan -n
bendera.
Gunakan -q
jika anda don't ingin melihat laporan setelah sukses penghapusan.
Saya juga membuat gambar di bawah ini untuk membuatnya lebih memorisable, khusus saya telah melihat banyak orang bingung -f
untuk membersihkan folder kadang-kadang atau mencampurnya entah bagaimana!
Cara yang lebih baik adalah dengan menggunakan: git bersih
git clean -d -x -f
Hal ini menghilangkan terpantau file, termasuk direktori (-d)
dan file yang diabaikan oleh git (-x)`.
Juga, menggantikan -f
argumen dengan -n
untuk melakukan dry-run
atau aku
untuk mode interaktif dan itu akan memberitahu anda apa yang akan dihapus.
Pengguna interaktif pendekatan:
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
-aku interaktif
-f untuk kekuatan
-d untuk direktori
-x untuk mengabaikan file(tambahkan jika diperlukan)
Catatan: Add -n atau --dry-run untuk hanya memeriksa apa yang akan dilakukan.
git bersih -f -d -x $(git rev-mengurai --show-cdup)
berlaku bersih ke direktori root, di mana pun anda menyebutnya dalam repositori pohon direktori. Saya menggunakannya sepanjang waktu seperti itu tidak memaksa anda untuk meninggalkan folder di mana anda bekerja sekarang dan memungkinkan untuk membersihkan & komit kanan dari tempat di mana anda berada.
Pastikan bahwa bendera -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 bendera lain juga tersedia, hanya memeriksa git bersih --help
.
Sebuah trik kuno untuk situasi seperti itu aku hanya menemukan dan mencoba (yang bekerja sempurna):
git add .
git reset --hard HEAD
Hati-hati! Pastikan untuk melakukan perubahan yang diperlukan (bahkan di non-terpantau file) sebelum melakukan ini.
Jika anda hanya ingin menghapus file yang terdaftar sebagai terpantau oleh 'git status'
git stash save -u
git stash drop "stash@{0}"
Saya lebih memilih untuk 'git bersih' karena 'git bersih' akan menghapus file diabaikan oleh git, jadi anda membangun berikutnya akan harus membangun kembali semuanya dan anda mungkin kehilangan IDE pengaturan juga.
Untuk mengetahui apa yang akan dihapus sebelum benar-benar menghapus:
git bersih -d -n
Ini akan menampilkan sesuatu seperti:
Ini akan menghapus sample.txt
Untuk menghapus segala sesuatu yang tercantum dalam output dari perintah sebelumnya:
git bersih -d -f
Ini akan menampilkan sesuatu seperti:
Menghapus sample.txt