Cara menghapus file lokal (tidak terlacak) dari pohon kerja Git saat ini

6843

Bagaimana Anda menghapus file lokal yang tidak terlacak dari pohon kerja Anda saat ini?

Hanya baca
sumber
86
Lembar cheat git interaktif ini ndpsoftware.com/git-cheatsheet.html menunjukkan ruang kerja git (google memberi Anda hasil yang lebih baik dengan "workspace" daripada "copy pekerjaan").
qneill
28
Catatan: jika Anda hanya ingin menghapus beberapa file yang tidak terlacak, tetapi tidak semuanya , git cleansekarang memiliki mode interaktif ! Lihat jawaban saya untuk pertanyaan lain ini : git 1.8.4+
VonC
17
Perhatikan bahwa Anda tidak menghapus file dari git branch, karena branch adalah referensi ke komit dan karenanya tidak mengandung file yang tidak dilacak. Itu hanya ada di direktori kerja dan tidak ada hubungannya dengan cabang. Itu mungkin hanya klarifikasi terminologi.
Pavel Šimerda
6
Untuk mengklarifikasi pemahaman orang yang belum tahu dan yang baru ke Git - jalankan status git dan jika file itu ditampilkan sebagai tidak terlacak, dan Anda tidak ingin file itu dalam repo, Anda bisa langsung pergi ke sistem file dan menghapus atau memindahkannya . Ini tidak akan melakukan hal buruk pada repo lokal Anda atau ke Git. Anda juga dapat menggunakan git cleanatau beberapa variasi dalam jawaban di bawah ini, termasuk versi interaktif untuk menghapus hanya file selektif, tetapi mode interaktif dapat membosankan. Apa pun yang Anda lakukan, pastikan Anda memahami apa yang git cleanakan dihapus atau digunakan --dry-rununtuk memberi tahu Anda tanpa menghapus apa pun.
LightCC
4
Jika file-file tersebut belum dilacak, tidak bisakah Anda menghapusnya tanpa git? rm files-to-be-deleted
mhatch

Jawaban:

8734

git-clean - Hapus file yang tidak terlacak dari pohon yang berfungsi

Ringkasan

git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>…​

Deskripsi

Bersihkan pohon yang bekerja dengan menghapus file secara rekursif yang tidak di bawah kontrol versi, mulai dari direktori saat ini .

Biasanya, hanya file yang tidak dikenal ke Git yang dihapus, tetapi jika -xopsi ini ditentukan, file yang diabaikan juga dihapus. Ini dapat, misalnya, berguna untuk menghapus semua produk buatan.

Jika ada <path>...argumen opsional yang diberikan, hanya jalur tersebut yang terpengaruh.


Langkah 1 adalah untuk menunjukkan apa yang akan dihapus dengan menggunakan -nopsi:

# Print out the list of files which will be removed (dry run)
git clean -n

Langkah Bersih - berhati - hatilah: ini akan menghapus file :

# Delete the files from the repository
git clean -f
  • Untuk menghapus direktori, jalankan git clean -f -dataugit clean -fd
  • Untuk menghapus file yang diabaikan, jalankan git clean -f -Xataugit clean -fX
  • Untuk menghapus file yang diabaikan dan yang tidak diabaikan, jalankan git clean -f -xataugit clean -fx

Perhatikan perbedaan huruf pada Xuntuk dua perintah terakhir.

Jika clean.requireForcediatur ke "true" (default) dalam konfigurasi Anda, orang perlu menentukan -fjika tidak, tidak ada yang akan terjadi.

Sekali lagi lihat git-cleandokumen untuk informasi lebih lanjut.


Pilihan

-f, --force

Jika variabel konfigurasi Git clean.requireForce tidak disetel ke false, git clean akan menolak dijalankan kecuali diberikan -f, -natau -i.

-x

Jangan gunakan aturan abaikan standar yang dibaca dari .gitignore (per direktori) dan $GIT_DIR/info/exclude, tetapi tetap gunakan aturan abaikan yang diberikan dengan -eopsi. Ini memungkinkan menghapus semua file yang tidak dilacak, termasuk membangun produk. Ini dapat digunakan (mungkin bersamaan dengan reset git) untuk membuat direktori kerja yang masih asli untuk menguji build yang bersih.

-X

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

-n, --dry-run

Jangan benar-benar menghapus apa pun, tunjukkan saja apa yang akan dilakukan.

-d

Hapus direktori tidak terlacak selain file tidak terlacak. Jika direktori tidak dilacak dikelola oleh repositori Git yang berbeda, itu tidak dihapus secara default. Gunakan -fopsi dua kali jika Anda benar-benar ingin menghapus direktori seperti itu.

Ashkan Sirous
sumber
288
git clean -fhanya berfungsi di direktori tempat namanya (dan subdirektori). Jika Anda ingin membersihkan seluruh copy pekerjaan, Anda harus memanggilnya di direktori root-nya.
Eduardo Bezerra
17
Itu juga menghapus semua file di dalam .gitignore. Saya hanya perlu menghapus file / folder yang baru dan tidak ada di .gitignore
Kostanos
24
@Kostanos Jika Anda tidak ingin menghapus file yang ada di .gitignore, maka jangan berikan flag -x.
Lo-Tan
52
git clean -f :/berfungsi seolah-olah Anda telah menjalankannya di dir repo root. Lihat juga jawaban di kemudian hari yang mencakup submodula dengangit clean -ffxd :/
sini
18
@Michelle git clean -xfd AKAN AKAN HAPUS SEMUA FILE SAAT INI DIGABUNGKAN dalam .gitignore Anda dan semuanya tidak dapat dipulihkan
thedanotto
987

Gunakan git clean -f -duntuk memastikan bahwa direktori juga dihapus.

  1. Jangan benar-benar menghapus apa pun, tunjukkan saja apa yang akan dilakukan.

    git clean -n
    

    atau

    git clean --dry-run
    
  2. Hapus direktori tidak terlacak selain file tidak terlacak. Jika direktori tidak dilacak dikelola oleh repositori Git yang berbeda, itu tidak dihapus secara default. Gunakan -fopsi dua kali jika Anda benar-benar ingin menghapus direktori seperti itu.

    git clean -fd
    

Anda kemudian dapat memeriksa apakah file Anda benar-benar hilang git status.

robert.berger
sumber
115
Seperti yang dinyatakan sebelumnya, bagus untuk menjalankannya kering dengangit clean -n -d
Ms01
15
Hal yang sama harus dilakukan git clean -nddan git clean -fd.
Micer
478

Saya terkejut tidak ada yang menyebutkan ini sebelumnya:

git clean -i

Itu berarti interaktif dan Anda akan mendapatkan gambaran umum singkat tentang apa yang akan dihapus dengan menawarkan Anda kemungkinan untuk memasukkan / mengecualikan file yang terpengaruh. Secara keseluruhan, masih lebih cepat dari menjalankan wajib--dry-run sebelum pembersihan nyata.

Anda harus memasukkan -djika Anda juga ingin menjaga folder kosong. Pada akhirnya, itu membuat alias yang bagus:

git iclean

Yang sedang berkata, pegangan tangan ekstra dari perintah interaktif dapat melelahkan bagi pengguna yang berpengalaman. Hari ini saya hanya menggunakan yang sudah disebutkangit clean -fd

SystematicFrank
sumber
16
@ pal4life Sudah ditambahkan di 1.8.4, Anda mungkin menjalankan versi git yang lebih lama? github.com/git/git/blob/master/Documentation/RelNotes/1.8.4.txt
Mattias Backman
Saya suka ini - saya lebih nyaman memilikinya dalam sejarah bash saya daripada opsi lain, karena itu bukan masalah besar jika saya tidak sengaja ctrl-r atau ctrl-p untuk itu.
csvoss
Mungkinkah itu git clean -ihanya berfungsi jika dipanggil dari root copy pekerjaan?
Alessandro Jacopson
250

Jika direktori yang tidak dilacak adalah repositori git sendiri (mis. Submodule), Anda perlu menggunakan -fdua kali:

git clean -d -f -f

Michał Szajbe
sumber
4
BTW, ini ditulis dalam dokumentasi : Git akan menolak untuk menghapus direktori dengan .git sub direktori atau file kecuali -f kedua diberikan. Tapi Terimakasih!
Maxim Suslov
248

Cara mudah untuk menghapus file yang tidak terlacak

Untuk menghapus semua file yang tidak terlacak, Cara sederhananya adalah menambahkan semuanya terlebih dahulu dan mengatur ulang repo seperti di bawah ini

git add --all
git reset --hard HEAD

Thanga
sumber
8
Anda bisa menggantinya git add --alldengan git add .. Jadi Anda bisa melakukannya dengan cara yang lebih singkat di internet git add . && git reset --hard HEAD ( sangat hati-hati dengan perintah ini) .
RousseauAlexandre
22
Mengapa menggunakan ini git clean?
user2864740
8
Karena git cleanternyata juga menghapus semua yang diabaikan. Itu baru saja menghapus node_modulesfolder saya . Melakukan ini pertama-tama akan mem-stage semua file kecuali yang diabaikan, dan kemudian menghapusnya dengan melakukan reset. File yang diabaikan tidak akan disentuh.
Andreas
5
@Andreas tidak menghapus file yang diabaikan untuk saya (git 2.14.1). Anda harusgit clean -n tetap menjalankannya sebelum melakukan penghapusan (atau penggunaan git clean -i) yang sebenarnya.
Qw3ry
8
git cleanmenghapus file yang diabaikan hanya jika Anda menggunakan opsi -xatau -X, jika tidak, hanya akan menghapus file yang tidak terlacak.
doubleDown
140

Saya suka git stash push -ukarena Anda dapat membatalkan semuanya git stash pop.

EDIT: Juga saya menemukan cara untuk menampilkan file yang tidak terlacak dalam simpanan (misalnya git show stash@{0}^3) https://stackoverflow.com/a/12681856/338986

EDIT2: git stash saveditinggalkan karena mendukung push. Terima kasih @ script-serigala.

hiroshi
sumber
3
Bisakah Anda jelaskan -u di simpanan? Saya tidak mengikuti cara kerjanya berbeda dari git simpanan simpanan. Saya mencoba ini dan itu berhasil. Melihat pada git docs dan tidak dapat menemukannya di sana juga.
Winnemucca
9
-usetara dengan --include-untracked. Anda dapat menemukan bantuan git help stash.
hiroshi
3
@hiroshi, terima kasih! setelah mencoba setiap solusi sialan dari selusin orang yang berbeda inilah yang akhirnya berhasil ... wah! Bahkan simpanan git memang bernada. The save - u merawat tidak terlacak. atur ulang hard / clean force / dll. semua ini tidak melakukan apa-apa untuk saya.
killjoy
3
The savepilihan yang usang dalam mendukung push, yang melakukan hal yang sama tetapi lebih. Anda dapat membaca lebih lanjut di sini, /programming/44680028/whats-the-difference-between-git-stash-save-and-git-stash-push/44681952
Script Wolf
120

Inilah yang selalu saya gunakan:

git clean -fdx

Untuk proyek yang sangat besar, Anda mungkin ingin menjalankannya beberapa kali.

Oscar Fraxedas
sumber
@ Martin Salah satu proyek yang sedang saya kerjakan adalah +8 tahun dengan +80 pengembang yang secara aktif melakukan koding. Git terkadang gagal membersihkannya pada pass pertama.
Oscar Fraxedas
1
Saya dapat mengkonfirmasi ini, jadi ini masih berlaku pada tahun 2020. Kami juga sedang mengerjakan proyek besar dan saya harus menjalankannya 4-5 kali hingga GIT tidak menemukan lagi file yang akan dihapus.
turbolocust
90

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

Espo
sumber
86

Jika perlu untuk menghapus file yang tidak dilacak dari subdirektori tertentu,

git clean -f {dir_path}

Dan gabungan cara untuk menghapus dir / file yang tidak terlacak dan file yang diabaikan.

git clean -fxd {dir_path}

setelah ini, Anda hanya akan mengubah file dalam git status.

Vijay C
sumber
68

Hapus semua folder dan file tambahan dalam submo + repo ini

Ini membuat Anda dalam kondisi yang sama dengan klon baru.

git clean -ffdx

Hapus semua folder dan file tambahan dalam repo ini tetapi tidak dengan submodulanya

git clean -fdx

Hapus folder tambahan tetapi bukan file (mis. Build atau folder log)

git clean -fd

Hapus folder ekstra + file yang diabaikan (tetapi bukan file yang baru ditambahkan)

Jika file tidak diabaikan dan belum check-in maka file itu tetap ada. Catat modal X.

git clean -fdX

Mode interaktif baru

git clean
Shital Shah
sumber
57

git clean -fd menghapus direktori

git clean -fX menghapus file yang diabaikan

git clean -fx menghapus file yang diabaikan dan yang tidak diabaikan

dapat digunakan semua opsi di atas dalam kombinasi sebagai

git clean -fdXx

lihat manual git untuk bantuan lebih lanjut

Pooja
sumber
10
Perintah git clean -fdXxmenghasilkan pesan kesalahan "fatal: -x dan -X tidak dapat digunakan bersama" (menggunakan git-2.8). Untuk kalimat terakhir dalam jawaban Anda, berikan tautan ke git manual. Cheers
olibre
jalankan dua perintah secara berurutan: git clean -fdX, git clean -fdx
Clock ZHONG
55

OK, menghapus file dan folder yang tidak diinginkan yang tidak diinginkan mudah digunakan gitdalam baris perintah, lakukan saja seperti ini:

git clean -fd

Periksa ulang sebelum melakukannya karena akan menghapus file dan folder tanpa membuat riwayat apa pun ...

Juga dalam hal ini, -fsingkatan dari kekuatan dan-d singkatan untuk direktori ...

Jadi, jika Anda ingin menghapus file saja, Anda -fhanya dapat menggunakan :

git clean -f

Jika Anda ingin menghapus (direktori) dan file, Anda hanya dapat menghapus direktori dan file yang tidak dilacak seperti ini:

git clean -fd

Anda juga dapat menggunakan -xflag untuk memasukkan file yang diabaikan oleh git. Ini akan sangat membantu jika Anda ingin menghapus semuanya.

Dan menambahkan -iflag, membuat git meminta Anda izin untuk menghapus file satu per satu saat bepergian.

Jika Anda tidak yakin dan ingin memeriksa hal-hal terlebih dahulu, tambahkan -nbendera.

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

Saya juga membuat gambar di bawah untuk membuatnya lebih mudah diingat, terutama saya telah melihat banyak orang bingung -funtuk membersihkan folder kadang-kadang atau mencampurnya entah bagaimana!


menghapus file dan folder yang tidak diinginkan yang tidak terlacak

Alireza
sumber
Ada apa dengan gambar itu?
Pacerier
37

Cara yang lebih baik adalah dengan menggunakan: git clean

git clean -d -x -f

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

Juga, ganti -fargumen dengan -nuntuk melakukan mode interaktif dry-runatau -idan akan memberi tahu Anda apa yang akan dihapus.

Rehabilitasi
sumber
25

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
-f untuk memaksa
-d untuk direktori
-x untuk file yang diabaikan (tambahkan jika diperlukan)

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

bit_cracker007
sumber
20

Lifehack untuk situasi seperti itu yang baru saja saya ciptakan dan coba (yang bekerja dengan sempurna):

git add .
git reset --hard HEAD

Waspadalah! Pastikan untuk melakukan perubahan yang diperlukan (bahkan dalam file yang tidak dilacak) sebelum melakukan ini .

thybzi
sumber
3
Setidaknya ini pendekatan yang berbeda. :) Cara lain, yang akan mengingat file yang dihapus di reflog tetapi tidak di cabang mana pun, akan menjadi:git add . git commit -m 'about to delete' git reset --hard HEAD~
joeytwiddle
2
cara yang lebih cepat adalahgit add . && git reset --hard HEAD
thybzi
3
git add . && git reset --hard
Pleymor
Ini mungkin bukan yang Anda inginkan jika ada juga perubahan yang ingin Anda lakukan.
lacostenycoder
@AlexanderMills git reset --hardme-reset semua perubahan yang tidak dikomit, TAPI UNTRACKED FILES ke status commit terbaru. Itulah mengapa pertama-tama kita perlu git add .- yang mem-stage semua file yang tidak terlacak (sehingga mereka direset juga)
thybzi
19

git clean -f -d -x $(git rev-parse --show-cdup)berlaku clean ke direktori root, di mana pun Anda menyebutnya dalam pohon direktori repositori. Saya menggunakannya sepanjang waktu karena tidak memaksa Anda untuk meninggalkan folder tempat Anda bekerja sekarang dan memungkinkan untuk membersihkan & melakukan komit langsung dari tempat di mana Anda berada.

Pastikan bahwa bendera -f, -d, -xsesuai 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, cukup periksa git clean --help.

Nikita Leonov
sumber
BTW Anda bisa melakukan git clean {flags}: / jadi seolah-olah Anda menjalankan perintah di root repo
The-null-Pointer-
19

Bagi saya hanya bekerja berikut:

git clean -ffdx

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

rahul286
sumber
2
Terima kasih. Saya meninggalkan -xdan hanya digunakan git clean -ffduntuk menghindari menghapus file di .gitignore.
Feckmore
15

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

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

Saya lebih suka ini daripada 'git clean' karena 'git clean' akan menghapus file yang diabaikan oleh git, jadi build Anda berikutnya harus membangun kembali semuanya dan Anda juga bisa kehilangan pengaturan IDE Anda.

jazzdev
sumber
3
Ini juga akan menghapus perubahan yang valid untuk file yang dilacak. Saya tidak akan merekomendasikannya.
code_dredd
2
Ya, Anda ingin melakukan perubahan pada file yang dilacak terlebih dahulu.
jazzdev
14

Untuk mengetahui apa yang akan dihapus sebelum benar-benar menghapus:

git clean -d -n

Ini akan menampilkan sesuatu seperti:

Akan menghapus sample.txt

Untuk menghapus semua yang tercantum dalam output dari perintah sebelumnya:

git clean -d -f

Ini akan menampilkan sesuatu seperti:

Menghapus sample.txt

Omar Mowafi
sumber
11

Untuk menghapus file yang tidak dilacak Anda harus terlebih dahulu menggunakan perintah untuk melihat file yang akan terpengaruh oleh pembersihan

git clean -fdn

Ini akan menunjukkan kepada Anda daftar file yang akan dihapus. Sekarang untuk benar-benar menghapus file-file itu gunakan perintah ini:

git clean -fd
Gaurav
sumber
11

Hati-hati saat menjalankan perintah `git clean`.

Selalu gunakan -n sebelum menjalankan perintah yang sebenarnya karena akan menunjukkan kepada Anda file apa yang akan dihapus.

git clean -n -d 
git clean -f -d

Secara default, git cleanhanya akan menghapus file yang tidak dilacak yang tidak diabaikan. File apa pun yang cocok dengan pola di .gitignore Anda atau file abaikan lainnya tidak akan dihapus. Jika Anda ingin menghapus file-file itu juga, Anda dapat menambahkan -xperintah bersih.

git clean -f -d -x

Ada juga mode interaktif yang tersedia -idengan perintah bersih

git clean -x -i

kalau tidak

Jika Anda tidak 100% yakin bahwa menghapus pekerjaan yang tidak dikomit aman, Anda dapat menggunakan simpanan

git stash --all

Ini juga akan menghapus direktori Anda, tetapi memberi Anda keleluasaan untuk mengambil file kapan saja menggunakan simpanan dengan apply atau pop . Kemudian pada titik nanti Anda dapat menghapus simpanan Anda menggunakan:

git stash drop // or clean
DevWL
sumber
2
simpanan adalah ide yang bagus, namun Anda mungkin ingin menggunakannyagit stash save and type some comment as to what this stash was for
lacostenycoder
9

git clean -f to remove untracked files from working directory.

Saya telah membahas beberapa dasar-dasar di sini di blog saya, git-intro-basic-commands

ya
sumber
9

Perintah yang disarankan untuk Menghapus File yang Tidak Dilacak dari git docs adalah git clean

git bersih - Hapus file yang tidak terlacak dari pohon yang berfungsi

Metode yang Disarankan: Mode Interatif dengan menggunakangit clean -i sehingga kami dapat memiliki kontrol atasnya. biarkan melihat sisa opsi yang tersedia.

Pilihan yang tersedia:

git clean 
    -d -f -i -n -q -e -x -X (can use either)

Penjelasan:

1. -d

Hapus direktori tidak terlacak selain file tidak terlacak. Jika direktori tidak dilacak dikelola oleh repositori Git yang berbeda, itu tidak dihapus secara default. Gunakan opsi -f dua kali jika Anda benar-benar ingin menghapus direktori tersebut.

2. -f, --force

Jika variabel konfigurasi Git clean.requireForce tidak disetel ke false, git clean akan menolak dijalankan kecuali diberikan -f, -n atau -i.

3. -i, --interaktif

Tunjukkan apa yang akan dilakukan dan bersihkan file secara interaktif. Lihat “Mode interaktif” untuk detailnya.

4. -n, --dry-run

Jangan benar-benar menghapus apa pun, tunjukkan saja apa yang akan dilakukan.

5. -q, --quiet

Diam, hanya laporkan kesalahan, tetapi bukan file yang berhasil dihapus.

6. -e, --exclude =

Selain yang ditemukan di .gitignore (per direktori) dan $ GIT_DIR / info / kecualikan, pertimbangkan juga pola-pola ini dalam rangkaian aturan abaikan yang berlaku.

7. -x

Jangan gunakan aturan abaikan standar yang dibaca dari .gitignore (per direktori) dan $ GIT_DIR / info / kecualikan, tetapi tetap gunakan aturan abaikan yang diberikan dengan opsi -e. Ini memungkinkan menghapus semua file yang tidak dilacak, termasuk membangun produk. Ini dapat digunakan (mungkin bersamaan dengan reset git) untuk membuat direktori kerja yang masih asli untuk menguji build yang bersih.

8. -X

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

Mohideen bin Mohammed
sumber
Saya pikir Anda memiliki kesalahan ketik uggestedtapi itu hanya " uggestionlol
lacostenycoder
8

git cleanPerintah normal tidak menghapus file yang tidak dilacak dengan saya git version 2.9.0.windows.1.

$ git clean -fdx     # doesn't remove untracked files
$ git clean -fdx *   # Append star then it works!
Kujiy
sumber
7

Kita dapat dengan mudah menghapus file-file lokal yang tidak terlacak dari pohon git saat ini dengan menggunakan komentar git di bawah ini.

git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>]

Contoh:

git reset --hard HEAD

Tautan:

  1. https://git-scm.com/docs/git-reset
  2. Bagaimana saya menggunakan 'git reset --hard HEAD' untuk kembali ke komit sebelumnya?
  3. Reset cabang repositori lokal menjadi seperti HEAD repositori jarak jauh
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html
Elangovan
sumber
Ini juga akan menghapus perubahan yang dilakukan untuk melakukan, bukan hanya file yang tidak terlacak, yang mungkin bukan yang Anda inginkan.
serak
Tidak berfungsi: meninggalkan beberapa file. git clean -ffdxadalah solusinya
Eugene Gr. Philippov
7

Bersihkan repositori git dan semua submodul secara rekursif

Perintah berikut akan membersihkan repositori git saat ini dan semua submodulanya secara rekursif:

(git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f)
Sergey
sumber
tentunya ini harus digunakan dengan sangat hati
lacostenycoder
6
git clean -f

akan menghapus file yang tidak dilacak dari git saat ini

git clean -fd

ketika Anda ingin menghapus direktori dan file, ini hanya akan menghapus direktori dan file yang tidak terlacak

Sudhir Vishwakarma
sumber
5

oh-my-zsh dengan zsh menyediakan alias-alias yang bagus melalui plugin git. Mereka dapat digunakan dalam bash juga.

gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'

  • gclean menghapus direktori yang tidak dilacak selain file yang tidak dilacak .
  • gpristineatur ulang perubahan lokal, hapus direktori yang tidak dilacak , file yang tidak dilacak dan jangan gunakan aturan abaikan standar yang dibaca dari .gitignore (per direktori) dan $ GIT_DIR / info / kecualikan, tetapi tetap gunakan aturan abaikan yang diberikan dengan opsi -e. Ini memungkinkan menghapus semua file yang tidak dilacak, termasuk membangun produk. Ini dapat digunakan (mungkin bersamaan dengan reset git) untuk membuat direktori kerja yang masih asli untuk menguji build yang bersih .
ZenLulz
sumber
2
Terima kasih atas tanggapan Anda, pernyataan saya membingungkan. Saya ingin mengatakan bahwa alias yang disorot datang secara otomatis dengan oh-my-zsh. Mereka jelas bekerja dengan baik bash. Saya mengedit jawaban saya untuk mencerminkan hal itu.
ZenLulz
4

Saya suka menggunakan git stashperintah, nanti Anda bisa mendapatkan file simpanan dan perubahan. git cleanjuga merupakan pilihan yang baik tetapi sangat tergantung pada kebutuhan Anda. di sini adalah penjelasan tentang git simpanan dan git bersih, 7.3 Git Tools - Stashing and Cleaning

Zia
sumber