Bumalik sa blog

Git Remove Untracked Files: Ligtas na git clean Guide

Setyembre 9, 2026

TL;DR: para tanggalin ang untracked files sa git, i-run ang git clean -fd — pero laging mag-preview gamit ang git clean -nd muna, dahil permanente ang burado ng clean at hindi dumadaan sa trash. -f para sa files, -fd para sa files at directories, at -fdx kung kasama dapat ang gitignored build output. Ang isang pinakakaraniwang reklamo — “walang tinatanggal ang git clean sa mga untracked files ko” — halos laging ang mga files ay nakalaman sa isang untracked directory (dagdagan ng -d) o ignored files sila (dagdagan ng -x). Normal na byproduct ng mga eksperimento, builds at clone-adjacent scripts ang untracked na kalat; ipinapakita ng guide na ito kung paano i-preview ang bawat pagbura, magtanggal ng files mula sa isang directory lang, at aling combinations ang huwag kailanman i-run sa repo na pinapahalagahan mo.

Ano ang ibig sabihin ng “untracked files” sa git status?

Ang untracked ay ang nakikita ng git ang file sa disk pero hindi kailanman sinabihan na i-track ito — wala ito sa index at walang commit history. Ginagroup ng git status ang lahat sa tatlong bucket:

$ git status --short
 M src/app.ts        # modified: tracked, changed
?? notes.txt         # untracked: new file git doesn't know
?? build/            # untracked directory: entirely new to git

Mahalaga ang pagkakaibang iyan dahil magkaiba ang tanggalang tool na kailangan ng bawat bucket. Ang mga tracked-but-changed na file ay binabalik gamit ang git restore o inii-commit na lang — hindi gagalawin ng git clean ang mga ito. Ang mga ?? line lang ang teritoryo ng git clean. Ang mga ignored file (kahit anong tinutugma ng .gitignore) ay nakatagong ika-apat na bucket: hindi man lang sila lumalabas bilang ??, at nilaktawan sila ng git clean maliban kung sadyang pinili mo gamit ang -x.

Kung ang totoong problema mo ay tracked na file na hindi dapat nai-commit, maling tool ang paglilinis — trabaho iyan ng git rm --cached, o ng pag-reset ng huling commit tulad ng saklaw sa git undo last commit: keep the changes.

Paano ko tatanggalin ang untracked files sa git?

Ang core command ay git clean -f. Kapag walang -f, tumatanggi ang git na burahin ang kahit ano at nagbabala lang — sadyang safety rail. Ganito ang buong ritwal:

# 1. See exactly what will be deleted (dry run — deletes nothing)
git clean -nd

# Would remove:
# notes.txt
# build/
# scratch/

# 2. Confirm nothing precious is in the list, then delete for real
git clean -fd

Flag-flag:

  • -f / --force — kailangan ito. Talaga ngang bumubura ng untracked files.
  • -d — pumasok sa mga untracked directory. Ang plain -f ay nagtatanggal lang ng untracked files sa top level at iniulat ang mga directory na tinanggihan nitong galawin.
  • -n / --dry-run — ipinapakita ang maaari sanang matanggal. Laging i-run ito muna.
  • -x — kasama ring burahin ang mga ignored file (node_modules, build output, .env).
  • -X — mga ignored file lang ang buburahin, pinapanatili ang untracked-na-hindi-ignored.
  • -i — interactive mode; kapaki-pakinabang kapag mahaba ang dry-run list.

Habit na worth kopyahin: ituring na git diff ang git clean -nd — tumitingin ka bago mag-commit, tumitingin ka bago maglinis.

Bakit walang tinatanggal ang git clean sa mga untracked files ko?

Tatlong totoong sanhi, ayon sa dalas ng kagat:

1. Nasa loob sila ng untracked directory. Gamit lang ang -f, tinatanggal ng git ang mga kalat na untracked file pero humihinto sa mga directory, na nai-uulat pa nga ang Would remove build/ nang hindi ito binubura sa totoong run. Dagdagan ng -d:

git clean -fd

2. Gitignored ang mga file. node_modules/, dist/, .venv/ — invisible sa plain clean ang mga ignored path. Hindi sila ililista ng dry run, at hindi rin sila tatanggalin ng clean. Sadyang pinili mo:

git clean -fdx   # untracked + ignored files and directories

3. May nakaharang na nested git repository o submodule. Hindi kailanman binubura ng git ang laman ng ibang repo mula sa labas. Tanggalin nang tama ang submodule o ipasa ang --force nang dalawang beses (git clean -ffd), at piliin ang unang opsyon.

Kung walang nililista ang dry run pero may ?? entries pa rin ang git status, malamang nasa maling working tree ka — i-run ang git rev-parse --show-toplevel at i-check na nasa repo ka na talagang lilinisin mo.

Paano ko tatanggalin ang untracked files mula sa isang partikular na directory lang?

Saklawan ang clean sa pamamagitan ng pagpasa ng path — pababayaan ang lahat ng iba:

git clean -fd build/          # only inside build/
git clean -fd src/generated   # one specific tree

Ito ang sagot sa “gusto kong tanggalin ang untracked files at folders sa build/ pero panatilihin ang scratch notes ko sa repo root”. Relative sa kasalukuyan mong directory ang path, kaya ang pag-run mula sa repo root ay sumasaklaw sa buong repo; ang pag-run mula sa subdirectory ay sumasaklaw sa subtree na iyon.

Paano ko tatanggalin ang untracked files nang hindi sila binubura?

Kapag may ipinapakita ang dry run na pwede mong kailanganin sa susunod, huwag kang magsugal — preserbahin muna, maglinis pagkatapos:

# Stash untracked files (including ignored ones with -a) without deleting
git stash push --include-untracked
git clean -fd                      # tree is clean
git stash pop                      # bring them back when needed

Inilalabas ng git stash -u ang mga untracked file sa puno pero nade-recover pa rin sila — iyan ang “tanggal nang hindi bumubura” na semantics na talaga namang hinahanap ng mga tao. Para sa preview na mapapanatili mo, binibigay ng git clean -nd > clean-plan.txt ang eksaktong listahan bago ka magcommit sa kahit ano. Walang undo pagkatapos ng git clean -f: ang binura ay wala na.

git clean vs git rm vs git restore: alin kailan?

CommandGinagalawTinatanggal sa diskGamitin kung
git clean -fdMga untracked files/dirsOoBumura ng mga files na hindi kailanman na-track ng git
git clean -fdxUntracked + ignoredOoBuong reset kasama ang node_modules, build output
git rm <file>Mga tracked filesOo (staged)Burahin ang file at irekord ang pagbura sa git
git rm --cached <file>Mga tracked filesHindiItigil ang pag-track ng file, panatilihin sa disk
git restore <file>Mga tracked filesHindiItapon ang mga local edit, panatilihin ang file

Ang isang-linyang rule: ang clean ang nagmamaneho ng hindi alam ng git; ang rm at restore ng alam nito. Sa paghahalo ng dalawa ang pagkawala ng trabaho — pag-running ng git clean -fdx habang akala mo kumikilos ito na parang git restore.

Saan hindi dapat mag-run ng git clean?

Dalawang habit na tuluyang iwasan:

  1. Huwag kailanman mag-run ng git clean -fdx nang bulag sa isang monorepo o workspace. Binubura nito ang bawat ignored directory — bawat node_modules, bawat virtualenv, bawat local na .env sa puno. Ang pagbabalik ng mga ito ay maaaring isang oras ng reinstalls, at ang binurang .env ay maaaring hindi na talaga ma-recover.
  2. Huwag gumawa ng alias na nakaluto na ang force. Pakiramdam ng git config alias.wipe "clean -fd" ay efficient hanggang sa ma-type mo nang mali ang path. Panatilihing isang keystroke ang layo ng dry run (git clean -nd) at gawing two-command ritual: preview tapos bura.

Kawili-kawili rin: ang paglilinis ng untracked files bago ang [sync a fork with upstream] na pull ay nagpapanatiling maliit ang merge surface — ang malinis na puno ang pinakamurang conflict insurance: sync a fork with upstream, hakbang-hakbang.

Ang ligtas na git clean workflow, condensed

git status --short        # what's in the tree?
git clean -nd             # preview: what WOULD go?
git clean -fd             # delete untracked files + directories
git clean -fdX            # (optional) clear only ignored build output
git status --short        # confirm: working tree clean

Preview, bura, verify — tatlumpung segundo, walang pagsisi, at sa wakas malinis na ang basa ng git status.

FAQ

Paano ko tatanggalin ang untracked files sa git?

Ang git clean -fd ay nagtatanggal ng untracked files at directories. I-dry-run mo muna gamit ang -n — destructive ang clean at walang undo.

Binubura rin ba ng git clean ang ignored files?

Hindi by default. Dinadagdag ng -x ang mga ignored file, at mga ignored lang ang tinutarget ng -X. Kalakhan ng mga aksidente ay nanggagaling sa -x sa loob ng scripts.

Paano ko pananatilihin ang isang untracked file pero lilinisin ang iba?

I-exclude mo gamit ang -e <path> o idagdag mo sa .gitignore bago mo i-run ang git clean -fd.

— mrsaynothing

— mrsaynothing

Mga field note sa AI, Linux at self-hosting.

Pag-usapan ang post na ito sa dev.to dev.to ↗

Ang susunod na how-to sa email

Isang email kada post. Ayusin, tuloy sa susunod.

self-hosted · walang third parties · one-click unsubscribe

ano ito?

Rsync vs SCP: Aling Linux Copy Command ang Gagamitin

Nag-e-enjoy ka ba sa mga sulat na ito? Ito ang tinatayo ko para sa trabaho. i-hire ako