Cara memindahkan lokal (tidak terlacak) file dari saat ini Git bekerja pohon

Bagaimana anda hapus tidak terlacak file lokal dari kerja anda saat ini pohon?

Mengomentari pertanyaan (9)
Larutan

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
  • Untuk menghapus direktori, menjalankan git bersih -f -d atau git bersih -fd
  • Untuk menghapus file diabaikan, menjalankan git bersih -f -X atau git bersih -fX
  • Untuk menghapus diabaikan dan non-diabaikan file, jalankan git 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.


Pilihan

-f, --force

Jika Git konfigurasi variabel bersih.requireForce tidak diatur untuk palsu, git bersih akan menolak untuk menjalankan kecuali diberi -f, -n atau aku.

-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.

Komentar (15)

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.

Komentar (2)

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

Komentar (4)

Jika tidak terlacak direktori git repositori sendiri (misalnya submodule), anda perlu menggunakan -f dua kali:

git bersih -d -f -f

Komentar (3)

Cara yang mudah untuk memindahkan file tidak terlacak

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

Komentar (13)

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.

Komentar (4)

Ini adalah apa yang saya selalu gunakan:

git clean -fdx

Untuk proyek yang sangat besar, anda mungkin ingin menjalankan beberapa kali.

Komentar (4)

git-bersih adalah apa yang anda cari. Hal ini digunakan untuk menghilangkan terpantau file dari bekerja di pohon.

Komentar (1)

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.

Komentar (0)

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

Komentar (2)

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
Komentar (0)

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!


Komentar (0)

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.

Komentar (0)

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.

Komentar (0)

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.

Komentar (1)

Bagi saya hanya mengikuti bekerja:

git clean -ffdx

Dalam semua kasus lain, saya mendapatkan pesan "melompat-Lompat Direktori" untuk beberapa subdirektori.

Komentar (2)

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.

Komentar (6)

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.

Komentar (2)

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

Komentar (0)