คุณสามารถใช้คำสั่ง git clean เพื่อลบ Untracked Files คำสั่ง -fd ลบ Untracked Directories และ git clean -fx ลบ Ignored และ Non-ignored Files คุณสามารถลบ Untracked Files ได้ด้วย .gitignore file
ใน Git Repository มีไฟล์ 2 ประเภท: Tracked และ Untracked Files คุณอาจเจอสถานการณ์ที่ต้องลบ Untracked Files จาก Git Repository
ควรลบ Untracked Files หรือไม่? เราอาจต้องทำหาก:
- Working (Local) Directory แม่งับด้วยไฟล์ไม่ได้ใช้
- คุณ Point Git ไป Folder ที่ไม่ต้องการ
- มี Leftover Files จาก Merge อื่นๆ หรือต้องการลบไฟล์บางไฟล์
Git Removed Untracked Files
คุณสามารถจัดการ Untracked Files จาก Git Branch ได้ด้วยวิธีเหล่านี้:
- ไฟล์ .gitignore ซึ่ง Ignore ไฟล์และ Directories ใน Repository
- คำสั่ง
git clean -fxลบ Untracked และ Tracked Files - คำสั่ง
git clean -fdลบ Untracked Files และ Directories
ในคู่มือนี้ เราจะอภิปรายวิธี Remove Untracked Files ด้วย Git พร้อมตัวอย่างเพื่อเริ่มต้นได้เร็ว
ความแตกต่างระหว่าง Tracked vs. Untracked Files
ใน Working หรือ Local Directory ไฟล์ของคุณเป็น Tracked หรือ Untracked Tracked หมายถึงไฟล์ที่ Added และ Committed ใน Snapshot ก่อนหน้า และ Git Aware, Track การเปลี่ยนแปลงของพวกเขา
Untracked Files คือตรงข้าม ไฟล์ที่ไม่อยู่ใน Previous Commit และยังไม่ Staged เพื่อ Commit คุณมี Option ว่าจะ Stage และ Commit เข้า Repository หรือ Remove พวกเขา!
ถ้าเราทำ git status ทันทีหลัง Modify/Add Files จะแสดง List ของ Untracked Files และ Files ที่ Tracked
Remove Untracked Files Git Option 1: .gitignore
Option แรกคือ Ignore ไฟล์เหล่านั้น คุณอาจทำงานโปรเจกต์ C++ ที่ Build แล้วได้ไฟล์ Generated ที่ไม่ต้องการให้พร้อมใช้งาน
เช่น คุณอาจมีไฟล์ .env ที่มี Environment Variables และ Database, API, Access Keys คุณไม่ต้องการข้อมูลนั้นออกสู่สาธารณะใช่ไหม? นี่คือที่มาของ .gitignore files
ไฟล์ใดๆ ที่อยู่ใน .gitignore จะไม่เป็นส่วนหนึ่งของ Untracked/Tracked Git Flow พวกเขาจะถูก Removed จากมัน Git จะ Ignore พวกเขาและไม่ Track พวกเขา และไม่ Complain ว่าพวกเขาไม่ Tracked
ก่อนอื่น สร้าง .gitignore file ที่ Root แล้วระบุ Relative Path ของ Location ถ้าบอกว่าเราต้องการซ่อน node_modules และ config.env file เราเพิ่มแบบนี้:
node_modules config.env
การเข้าใจ Gitignore เป็นสิ่งสำคัญเมื่อโปรเจกต์โตขึ้น คุณต้องรู้ว่า Folder/File ไหนต้องเพิ่มเข้าไป เพราะคุณไม่ต้องการพวกเขาใน Git Workflow เป็น Untracked แล้ว Stage โดยผิดพลาดและให้ Git Track ไฟล์敏感เช่น Keys Exposed!
การเข้าใจ Gitignore เป็นสิ่งสำคัญเมื่อโปรเจกต์โตขึ้น คุณต้องรู้ว่า Folder/File ไหนต้องเพิ่มเข้าไป เพราะคุณไม่ต้องการพวกเขาใน Git Workflow เป็น Untracked ให้ Stage โดยผิดพลาด ซึ่งจะทำให้ Git เริ่ม Track ไฟล์ที่มีข้อมูลที่ไม่ควร Share ใน Repository
Remove Untracked Files Git Option 2: git clean
Option ถัดไปสำหรับลบไฟล์คือใช้คำสั่ง git clean คำสั่ง git clean ลบ Untracked Files จาก Repository
Git Clean Command เริ่มจาก Current Working Directory ภายใน Working Tree ของคุณ Working Tree คือ Branch ที่คุณกำลัง View
คำสั่งนี้มีประโยชน์กรณีเช่น คุณ Add Folder ที่มีรูปมัธยมปลายเข้า Repository ตรงที่ต้องการ Folder อื่น
Git Clean รับ Options หลายตัว มาดู Syntax:
git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>…
จุดนี้คุ้มค่าที่จะบอกว่า Git Clean ลบไฟล์แบบ Hard System Way หมายความว่าไม่สามารถ Undo Changes ได้ คล้ายคำสั่ง rm ใน Terminal แต่ถ้าไฟล์ Tracked ใน Previous Commit เราอาจหา Old Version ได้
git clean -d -n
หากไม่ระบุ Path เรามักต้องการ Option -d ให้ Git ดู Untracked Directories
เราควรใส่ Flag Dry Run -n ก่อน คำสั่งนี้สั่ง Git Warn เราว่าจะลบอะไรก่อนลบจริง กล่าวคือ Flag -n ทำ Dry Run ของ Clean Function แล้วเราสามารถรัน git clean ได้จริงเมื่อแน่ใจ
Option นี้ให้ Safeguard ป้องกันการลบไฟล์ที่ยังไม่พร้อมลบ หรือไม่อยากลบ มาดูใน Action เรามี sillyPicture.jpg ที่ไม่ต้องการ Track และต้องการลบ เช็คว่าจะเกิดอะไร:

git clean -f
เพื่อให้ Git Clean ทำงาน เราอาจต้องระบุ Force Option. Option นี้ควรใช้ก็ต่อเมื่อคุณแน่ใจว่าต้องการลบไฟล์ที่เลือกจาก Repository
ลองลบ sillyPicture.jpg ด้วย git clean -f หรือเฉพาะเจาะจง git clean -f sillyPicture.jpg

ที่นี่คุณอาจสังเกตว่า git status ตอนแรกบอกว่ามี Untracked File แล้วหลัง Delete ด้วย -f Option ไฟล์ก็หายไป C'est fini!
แม้ -f Option และ Git Clean จะ Powerful มาก แต่จะไม่ทำงานกับ Ignored Files เพราะมันทำงานกับไฟล์ที่ Git Aware และเป็นส่วนของ Version Control System เท่านั้น
git clean -x
ไม่แนะนำเว้นแต่คุณรู้ว่ากำลังทำอะไร Yes คุณสามารถลบ Ignored Files และ Directories ได้ ทำได้โดยใช้ Option -x ดังนั้น git clean -d -x -f จะทำได้ง่าย แต่อย่าใช้ แค่นี้ก่อน
git clean -d -i
แนะนำสำหรับ Beginner ตอนเริ่มต้นคุณอาจต้องการระมัดระวัง Options ที่ส่งเข้าไป เราแสดง Dry Run -n Option แล้ว ยังมี -i Option ที่แสดง Interactive Interface ให้เล่นได้!

สรุป
คุณสามารถลบ Untracked Files จาก Repository ได้ด้วย .gitignore หรือ git clean command คำสั่ง git clean ลบไฟล์แบบ Recursive เริ่มจาก Current Working Directory ของคุณ
เพื่อเรียนรู้ Git เพิ่มเติม อ่านคู่มือ How to Learn Git ของเรา